Есть ли способ сохранить цвет текста, переданного в head, tail, less и т. д.?

Есть ли способ сохранить цвет текста, переданного в head, tail, less и т. д.?

Есть ли способ сохранить раскрашивание текста, переданного по каналу |в head, tail, less, и т. д.?

решение1

Я предполагаю, что вы передаёте данные lsи хотите сохранить цветовые коды терминала. Вы можете сказать ls --color=always(вместо значения по умолчанию --color=auto), что сохранит коды, но это не гарантирует, что то, к чему вы передаёте данные, знает, как их понимать.

Если вы используете glarkвместо grepэтого , то попытается отобразить с цветами.

Если вы используете lesswith -R, то будет предпринята попытка отображения с цветами.

решение2

Это зависит от программы, которая генерирует вывод в конвейере.

head, tail, и т. д. не удаляют цвета, это программа, генерирующая данные, которая обычно проверяет, направляется ли вывод на консоль (цветной), в файл или канал (не цветной)

я нашелеще один SU Q&Aпоказывающий, как обмануть программы, передающие вывод, как будто они отправляют вывод на консоль (эмуляция консоли с помощью unbuffer)

решение3

В Mac OS X man lsупоминается CLICOLOR_FORCEпеременная окружения.

Добавление export CLICOLOR_FORCE=1к ~/.zshrcили ~/.bashrc, в зависимости от используемой оболочки, сохраняет цвета при передаче lsв другие команды, такие как less, headи tail.

решение4

Учитывать

bat

Альтернатива

cat

Установить

brew install bat

--args --flags как

--languageи--theme

Примеры

head | bat --language=zsh -n -p --theme=gruvbox-dark
file.py | bat --language=py -n -p --theme=gruvbox-dark

Связанный контент