Есть ли способ, чтобы текст передавался в голову, хвост, меньше и т. Д., Чтобы он был цветным?
Есть ли способ сохранить раскраску текста, пропущенного через трубу |
в head
, tail
, less
, так далее.?
4 ответа
Я полагаю, что вы из ls
и хочу сохранить цветовые коды терминала. Ты можешь сказать ls --color=always
(вместо значения по умолчанию --color=auto
), который сохранит коды, но это не гарантирует, что объект, к которому вы подключаетесь, знает, как их понимать.
Если вы используете glark
вместо grep
он будет пытаться отображать с цветами.
Если вы используете less
с -R
он попытается отобразить с цветами.
Это зависит от программы, которая генерирует вывод в трубе.
head
, tail
и т. д. не те, кто удаляет цвета, это программа, генерирующая данные, которые обычно проверяют, идет ли вывод на консоль (цветной), в файл или канал (не цветной)
Я обнаружил еще один SU Q&A, показывающий, как лгать программам для вывода данных, как если бы они отправляли вывод на консоль (эмулируя консоль с помощью unbuffer
)
Учитывать
bat
Альтернатива
cat
Установить
brew install bat
--args --флаги типа
--language
и--theme
Примеры
head | bat --language=zsh -n -p --theme=gruvbox-dark
file.py | bat --language=py -n -p --theme=gruvbox-dark
В Mac OS Xman ls
упоминаетCLICOLOR_FORCE
переменная среды.
Добавлениеexport CLICOLOR_FORCE=1
к~/.zshrc
или~/.bashrc
, в зависимости от используемой вами оболочки, сохраняет цвета при передачеls
другим командам, таким какless
,head
, иtail
.