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?

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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.