изменение сообщения об ошибке стандартной команды - PullRequest
0 голосов
/ 10 февраля 2020

Как изменить стандартное сообщение об ошибке конкретной команды bash? Я пытался изменить стандартное сообщение об ошибке kill с kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] до specify PID of process to kill. Я не смог найти в Интернете ни одного материала, который помог бы мне понять, как работают сообщения об ошибках или как их изменять.

1 Ответ

0 голосов
/ 10 февраля 2020

Функция-обертка - это типичный правильный способ изменить поведение команды оболочки. В этом случае мы можем написать такую ​​оболочку, которая перенаправляет kill stderr в замену процесса , которая перезаписывает содержимое построчно:

kill() {
  builtin kill "$@" 2> >(
    while IFS= read -r line; do
      if [[ $line = "kill: usage: "* ]]; then
        echo "specify PID of process to kill" >&2
      else
        printf '%s\n' "$line" >&2
      fi
    done
  )
}

Running builtin kill гарантирует, что функция kill вызывает встроенную в оболочку версию kill вместо повторения и вызова самого себя. (Для внешних команд вы должны использовать command вместо builtin для обеспечения использования внешней команды вместо рекурсии).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...