Как сохранить цветной вывод с помощью команды sed

Размещение конфигурации в ~ / .bash_profile работает. Другой вариант - поместить конфигурацию в ~ / .profile , но этот файл будет проигнорирован, если файл ~ / .bash_profile уже существует в файловой системе.

10
29.01.2019, 15:28
2 ответа

Я слепо предполагаю, что ваш дистрибутив, как и многие другие, имеет псевдоним, который отображает lsв ls --color=auto. ls -la --color=always | sed …должно работать.

(Параметр autoзаставляет, вообще говоря, lsпроверять, идет ли его вывод на дисплей или нет, и только цвет для дисплея. Причина этого в том, что цвет реализуется escape-последовательностями, то есть невидимыми командными символами, поэтому программа может спутать их с частью имени файла и тому подобное.)

6
27.01.2020, 20:00

В macOS lsне является GNU lsи не принимает вариант --color=always, который пользователи Linux могут ожидать от этой функциональности.

В версии lsдля macOS цвета управляются двумя переменными:$CLICOLORи $CLICOLOR_FORCE. Если первое определено, терминал, указанный в $TERM, поддерживает цвет, а вывод идет на терминал, тогда этот вывод будет окрашен, как и опция --color=autoGNU. Если последняя переменная также определена, конечное условие отбрасывается, как в GNU --color=always.

Таким образом, чтобы передать цвет в sed, вам понадобится что-то вроде следующего:

CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
13
27.01.2020, 20:00

Теги

Похожие вопросы