Функция-обертка - это типичный правильный способ изменить поведение команды оболочки. В этом случае мы можем написать такую оболочку, которая перенаправляет 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
для обеспечения использования внешней команды вместо рекурсии).