Вопрос: Цвета в bash после трубопровода меньше?


Когда у меня есть dircolors определены жизнь полна ... цвет.

Когда я трубу ls через less для прокрутки я теряю цвета.

Какие-либо предложения?


92
2018-06-16 13:30


Источник




Ответы:


Скорее всего, ваш ls имеет псевдоним ls --color=auto, в котором говорится ls использовать только цвета, когда его выход является tty. Если вы это сделаете ls --color (что морально эквивалентно ls --color=always), что заставит его включить цвета.

Вы также можете изменить свой псевдоним, чтобы сделать это, но я бы не стал называть это хорошей идеей. Лучше сделать другой псевдоним с --color,

less потребности -R, слишком.


95
2018-06-16 13:38



Почему бы вам не назвать это хорошей идеей для псевдонима ls --color или ls --color=always, в этом отношении? - j08lue
@ j08lue, если вы выполняете команду, которая не обрабатывает цвет, вы получаете некоторые нежелательные символы, которые могут испортить эту команду. Например, я сделал ls --color=always | less и получил: ESC[01;32mexecute_once.shESC[0m (Я знаю, что это старо, и вам, вероятно, все равно, но для будущих посетителей это может быть полезно) - Ryan Amos
@RyanAmos как будущий посетитель, спасибо. :) - malvim


Попробуйте меньше с параметром -R следующим образом:

command | less -R

Это работает для меня в однострочном стиле:

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

И вот так:

ls --color | less -R

Но вы должны настроить первичный вывод (вывод ls в этом случае) бит с параметром --color.


50
2018-06-16 13:33



Спасибо, это также работает для ack-grep. ack-grep my_string --color | меньше -R - igniteflow
- цвет не распознается: ls: незаконный вариант - - Запуск bash на osx. - Scott Biggs
@Scott Biggs: в OSX нет - цвет; попробуйте ls -G
@ Лу-Чи, Даже с -G, цвета отсутствуют - Iulian Onofrei
В OS X вам нужно установить переменную среды CLICOLOR_FORCE (на что угодно), когда вывод ls не направлен на терминал. Это работает для меня: CLICOLOR_FORCE = ls -G | меньше -R - jooon