Màu sắc trong bash sau khi đường ống qua ít?


106

Khi tôi có dircolors định nghĩa cuộc sống đầy ... màu sắc.

Khi tôi lslướt qua lessđể cuộn xung quanh tôi mất màu sắc.

Bất kỳ đề xuất?

Câu trả lời:


105

Nhiều khả năng lslà bí danh của bạn ls --color=auto, điều này cho biết lschỉ sử dụng màu sắc khi đầu ra của nó là một tty. Nếu bạn làm ls --color(tương đương về mặt đạo đức ls --color=always), điều đó sẽ buộc nó phải bật màu.

Bạn cũng có thể thay đổi bí danh của mình để làm điều đó, nhưng tôi thực sự sẽ không gọi đó là một ý tưởng hay. Tốt hơn để làm một bí danh khác với --color.

lessnhu cầu -R, quá.


5
Tại sao bạn không gọi nó là một ý tưởng tốt cho bí danh ls ls --colorhoặc ls --color=always, cho vấn đề đó?
j08

10
@ j08lue nếu bạn chuyển qua một lệnh không xử lý màu, bạn sẽ nhận được một số ký tự rác có thể làm rối lệnh. Ví dụ: tôi đã làm ls --color=always | lessvà nhận: ESC[01;32mexecute_once.shESC[0m(Tôi biết điều này đã cũ và bạn có thể không quan tâm, nhưng đối với khách truy cập trong tương lai, điều này có thể hữu ích)
Ryan Amos

55

Hãy thử ít hơn với tùy chọn -R như thế này:

command | less -R

Điều này làm việc cho tôi trong một lót như thế này:

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

Và cũng như thế này:

ls --color | less -R

Nhưng bạn phải điều chỉnh đầu ra chính (đầu ra của ls trong trường hợp này) một chút với tham số --color.


Cảm ơn, điều này cũng hoạt động cho ack-grep. ack-grep my_opes --color | ít hơn -R
đốt cháy

1
--color không được công nhận: ls: tùy chọn bất hợp pháp - - Chạy bash trên osx.
Scott Biggie

1
@Scott Bigss: trong OSX không có --color; thử ls -G

@ Lu-Chi, Ngay cả với -G, màu sắc bị thiếu
Iulian Onofrei

1
Các -Rtùy chọn là chữ viết tắt --RAW-CONTROL-CHARS.
Rory O'Kane
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.