Warna dalam bash setelah pemipaan kurang?

106

Ketika saya memiliki dircolors, hidup ini penuh dengan ... warna.

Ketika saya pipa lsmelalui lessgulir sekitar saya kehilangan warna.

Ada saran?

MathewC
sumber

Jawaban:

105

Kemungkinan besar Anda lsalias ls --color=auto, yang lshanya menggunakan warna saat outputnya tty. Jika Anda melakukannya ls --color(yang secara moral setara dengan ls --color=always), itu akan memaksanya untuk mengaktifkan warna.

Anda juga dapat mengubah alias Anda untuk melakukan itu, tetapi saya tidak akan menyebut itu ide yang bagus. Lebih baik buat alias berbeda dengan --color.

lessperlu -Rjuga.

kekacauan
sumber
5
Mengapa Anda tidak menyebutnya ide yang bagus untuk alias ls to ls --coloratau ls --color=always, dalam hal ini?
j08lue
10
@ j08lue jika Anda mem-pipe melalui perintah yang tidak menangani warna, Anda mendapatkan beberapa karakter sampah yang mungkin mengacaukan perintah. Sebagai contoh, saya lakukan ls --color=always | lessdan dapatkan: ESC[01;32mexecute_once.shESC[0m(Saya tahu ini sudah tua dan Anda mungkin tidak peduli, tetapi untuk pengunjung masa depan, ini mungkin berguna)
Ryan Amos
55

Coba lebih sedikit dengan opsi -R seperti ini:

command | less -R

Ini bekerja untuk saya dalam satu-liner seperti ini:

ls -la | grep --color=always bash | less -r

Dan seperti ini juga:

ls --color | less -R

Tetapi Anda harus men-tweak output primer (output ls dalam kasus ini) sedikit dengan parameter --color.

wzzrd
sumber
Terima kasih, ini juga berfungsi untuk ack-grep. ack-grep my_string --color | less -R
igniteflow
1
--color tidak dikenali: ls: opsi ilegal - - Menjalankan bash di osx.
Scott Biggs
1
@Scott Biggs: di OSX tidak ada --color; coba ls -G
@ Lu-Chi, Bahkan dengan -G, warnanya hilang
Iulian Onofrei
1
The -Rpilihan adalah kependekan --RAW-CONTROL-CHARS.
Rory O'Kane