Ada pertanyaan simlar dalam Preserve ls coloring setelah grep'ing tetapi itu mengganggu saya bahwa jika Anda menyalurkan output grep berwarna ke grep lain bahwa pewarnaannya tidak dipertahankan.
Sebagai contoh grep --color WORD * | grep -v AVOID
tidak menjaga warna output pertama. Namun bagi saya ls | grep FILE
memang menjaga warnanya, mengapa bedanya?
Jawaban:
grep
terkadang menonaktifkan keluaran warna, misalnya saat menulis ke pipa. Anda dapat mengganti perilaku ini dengangrep --color=always
Baris perintah yang benar adalah
Ini sangat verbose, atau Anda bisa menambahkan baris
untuk Anda
.bashrc
misalnya dan gunakancgrep
sebagai grep berwarna. Ketika mendefinisikan ulanggrep
Anda mungkin mengalami masalah dengan skrip yang bergantung pada output spesifikgrep
dan tidak suka kode pelolosan ascii.sumber
grep
.alias grep='grep --color=auto
jadi saya hanya perlu mengubah di~/.bashrc
mana itu didefinisikan di tempat pertama.Satu kata nasihat:
Saat menggunakan
grep --color=always
, string aktual yang diteruskan ke pipa berikutnya akan diubah. Ini dapat mengarah pada situasi berikut:Meskipun opsi
-ve '12'
harus mengecualikan garis tengah, itu tidak akan terjadi karena ada karakter warna antara1
dan2
.sumber
--color=auto
, maka itu harus mengambil fakta Anda memipangnya di tempat lain dan menekan warna sama sekali, tetapi itu agak mengalahkan tujuannya. Jika Anda masih menginginkan hasil yang berwarna, saya kira Anda bisa melihatnya lagi di pipa terakhir menggunakan--color
.--color=always
tidak bekerja, dengan, saya berasumsi, peringatan yang dinyatakan di atas.Cukup ulangi perintah grep yang sama di ujung pipa Anda.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD
sumber
grep -v AVOID * | grep WORD