O annotate-output
script do Debiandevscripts
permite que você faça isso seletivamente:
$ annotate-output ls -ld /test
14:54:22 -: Started ls -ld /test
14:54:22 E: ls: cannot access /test: No such file or directory
14:54:22 -: Finished with exitcode 2
A segunda coluna indica stdout e stderr com O
e E
respectivamente.
Existem algumas advertências, a principal delas, conforme observado nas outras respostas: você não pode fazer isso depois do fato. Nem o shell nem o terminal sabem como um programa arbitrário usa seus descritores de arquivo, embora o shell seja responsável por configurá-los inicialmente.
Esse método usa fifos, escrever para um fifo pode se comportar de maneira diferente do que escrever para um tty, e escrever para dois fifos diferentes é definitivamente diferente (possíveis problemas de tempo / intercalação). Além disso, não é adequado para uso interativo, por exemplo, annotate-output bash
não é um ótimo plano, mas é útil para muitos outros fins. Existem muitos exemplos de scripts e funções de shell em respostas a perguntas relacionadas sobre a colorização de stdin / stdout / stderr. O mais robusto é stderrd, que usa a modificação do tempo de execução da (maioria) dos programas para modificar os dados gravados no stderr.
Esta pergunta à qual Anko se vincula tem boas respostas sobre esse tema relacionado: colorindo a saída stdout / stderr:
Posso configurar meu shell para imprimir STDERR e STDOUT em cores diferentes?