Ada jawaban di superuser.com:
your-command | grep -E --color 'pattern|$'
atau
your-command | grep --color 'pattern\|$'
Ini akan "cocok dengan pola Anda atau akhir baris pada setiap baris. Hanya pola yang disorot..."
Anda dapat mencoba (mungkin perlu lebih banyak melarikan diri):
BLUE="$(tput setaf 4)"
BLACK="$(tput sgr0)"
command | sed "s/^ERROR /${BLUE}ERROR ${BLACK}/g"
Jika Anda ingin mengaktifkan ini secara global, Anda akan menginginkan fitur terminal, bukan proses yang Anda gunakan untuk menyalurkan keluaran, karena sebuah pipa akan mengganggu beberapa perintah (dua masalah adalah stdout dan stderr akan tampak rusak dan buffered, dan bahwa beberapa perintah berperilaku berbeda saat mengeluarkan ke terminal).
Saya tidak tahu ada terminal "konvensional" dengan fitur ini. Ini mudah dilakukan di Emacs, dalam term
buffer:konfigurasikan font-lock-keywords
untuk term-mode
.
Namun, Anda harus memikirkan baik-baik apakah Anda benar-benar menginginkan fitur itu setiap saat. Bagaimana jika perintah memiliki warna sendiri (mis. grep --color
, ls --color
)? Mungkin lebih baik mendefinisikan alias pendek untuk perintah colorizer dan menjalankan myCommand 2>&1|c
ketika Anda ingin mewarnai myCommand
keluaran. Anda juga bisa menggunakan beberapa perintah khusus untuk selalu mewarnai.
Perhatikan bahwa status pengembalian pipeline adalah terakhir perintah, jadi jika Anda menjalankan myCommand | c
, Anda akan mendapatkan status c
, bukan myCommand
. Inilah bash wrapper yang menghindari masalah ini, yang dapat Anda gunakan sebagai w myCommand
:
w () {
"[email protected]" | c
return $PIPESTATUS[0]
}
Anda dapat menggunakan program seperti:
- spc (Supercat)
- grc (Pewarna Generik)
- sorot
- histring
- pygmentize
- grep --warna
Anda dapat melakukan sesuatu seperti ini, tetapi perintah tidak akan melihat tty (beberapa akan menolak untuk menjalankan atau berperilaku berbeda atau melakukan hal-hal aneh):
exec > >(histring -fEi error) # Bash