Não é realmente uma resposta, mas uma solução alternativa. Tente isto:
col-err() { "$@" 2> >(grep --color .) ; }
A sintaxe é um pouco diferente da função colorerr
na questão. Para col-err
, não cite o comando a ser executado:
col-err bash -c 'cd ${WEB_APP_DIR}; npm run-script build'
Exemplo que pode ser executado em qualquer lugar:
col-err bash -c 'ls $SHELL ${SHELL}_no_such ; echo
ls -l $HOME ${HOME}_no_such | head -2'
Como col-err
chama grep
, funciona com a variável $GREP_COLORS
. Para alterar a cor para verde (o primeiro ms=01;32
abaixo) para apenas um uso:
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'
Nota: sequência de cores adaptada da resposta de Chriki para "Use cores diferentes para todos os outros grep " .