На самом деле это не ответ, а обходной путь. Попробуйте это:
col-err() { "$@" 2> >(grep --color.) ; }
Синтаксис немного отличается от функции colorerr
в вопросе. Для col-err
укажите , а не команду, которая должна быть запущена :
.
col-err bash -c 'cd ${WEB_APP_DIR}; npm run-script build'
Пример, который можно запустить где угодно:
col-err bash -c 'ls $SHELL ${SHELL}_no_such ; echo
ls -l $HOME ${HOME}_no_such | head -2'
Поскольку col-err
вызывает grep
, он работает с переменной $GREP_COLORS
. Чтобы изменить цвет на зеленый (первый ms=01;32
ниже )всего за одно использование:
GREP_COLORS='ms=01;32:mc=01;33:sl=:cx=:fn=35:ln=32:bn=32:se=36' \
col-err bash -c 'ls $SHELL ${SHELL}_no_such ; echo
ls -l $HOME ${HOME}_no_such | head -2'
Примечание :строка цвета, адаптированная изответа Chriki на «Использовать разные цвета для каждого другого grep».
Возможно, вам следует следовать Ubuntu upstart Howto
Пара моментов, которые могут вас заинтересовать: