Есть ли способ раскрасить вывод cat
, способ grep
делает.
Ведь grep
в большинстве консолей выводится цветной вывод, выделяющий искомые ключевые слова. В противном случае вы можете принудительно вызвать его, вызвав. grep --color
Есть ли общий способ окрасить вывод любой программы в соответствии с вашим личным выбором.
Из того, что я понимаю, сама программа не отвечает за цвета. Это оболочка.
Я использую оболочку по умолчанию во FreeBSD 5.2.1, которая выглядит так, как будто никогда не видела цветов с эпохи.
unix
syntax-highlighting
color-scheme
Лелуш Лампероуг
источник
источник
Ответы:
cat
с подсветкой синтаксиса просто выходит за рамки.cat
не предназначен для этого. Если вы просто хотите, чтобы все содержимое какого-либо файла было каким-то образом окрашено (с одинаковым цветом для всего файла), вы можете использовать управляющие последовательности терминала для управления цветом.Вот пример сценария, который будет выбирать цвет в зависимости от типа файла (вы можете использовать что-то вроде этого вместо
cat
прямого вызова ):Выше (на терминале, который поддерживает эти escape-последовательности), любой текстовый файл будет напечатан как «жирный», а любой двоичный файл - красным. Вы можете использовать
strings
вместоcat
печати бинарные файлы и улучшать логику, чтобы она соответствовала вашим потребностям.источник
cat
/grep
/any particular program
cat
вызов на некоторый,$cmd
который инициализируется как $ 1, если есть два аргумента, или значение по умолчанию, если есть только один. Тогда вы просто написать:colorful.sh grep file
.pygmentize
не умеет красить. Какие-нибудь советы?Я бы порекомендовал
pygmentize
из пакета Pythonpython-pygments
. Вы можете определить следующий удобный псевдоним (если вы не используетеccat
из пакета ccrypt).И если вы хотите номера строк:
источник
highlight
.alias ccat='highlight -O ansi'
alias dog='pygmentize -g'
, потому что собаки круче кошек!#!/bin/bash \n pygmentize -g $1 | less -R
nyancat
.Параметры:
Пигментирование это хорошо. У меня есть псевдоним:
но выделить еще одну широко доступную альтернативу
Монтаж:
Возможно, вам придется установить
pygments
с помощью:и для
highlight
пакета, который легко доступен во всех дистрибутивахВ действии:
Я прилагаю снимки для обоих внизу для хорошего сравнения подсветки
Вот
pygmentize
в действии:и это
highlight
:источник
highlight
отлично работал для моих нужд и легко устанавливается, спасибо. Если вы хотите посмотреть на файлы без расширений (например, .bash_aliases), добавьте--syntax=bash
в дополнение к ним,-O ansi
чтобы форсировать это.highlight
в 34 раза быстрее, чем эта программа на Python. Сила классических языков остается сильной.highlight
, вы хотите добавить--force
к псевдониму, в противном случае он выдаст сообщение об ошибке для форматов файлов , которые он не понимает, в то время , какcat
замена вы хотите , чтобы она по- прежнему показывает выход без выделения, что и--force
делает. Все вместе:alias cat="highlight -O ansi --force"
-O ansi
умолчанию вывод html :-)С конца апреля 2018 года:
Проект представляет собой клон кошки с поддержкой цветов и настроек, написанных на Rust. Он предлагает не только подсветку синтаксиса несколькими темами, но и интеграцию с Git. Как описано в документации:
Излишне говорить, что это намного быстрее, чем пигментирование и не задыхается при работе с большими файлами.
Исходный код и бинарные выпуски + инструкции по установке можно найти в репозитории Github, а также для сравнения с альтернативными программами .
источник
bat
по умолчанию он находится в интерактивном режиме. Чтобы он вел себя более похожеcat
, используйте его с-pp
аргументом. Псевдоним, какalias cat="bat -pp"
это, вероятно, то, что люди ищут.vimcat
является однофайловым (shell-скрипт) и работает хорошо:http://www.vim.org/scripts/script.php?script_id=4325
Последнее обновление - декабрь 2013 г. Подсказка: вы можете принудительно распознать тип файла
vimcat -c "set ft=<type>"
.источник
~/.vimrc
подсветке, поэтому синтаксическая подсветка будет одинаковой как при редактировании (vim), так и при распечатке (vimcat). Обратите внимание, что обновленную версию vimcat можно найти в репозитории vimpager .vimpager
не использует мою vim colorscheme.vimcat
(время выполнения 1 ~ 2 секунды) намного медленнее, чемpymentize
(~ 200 мс), что намного медленнее, чемhighlight
(~ 20 мс), что намного медленнее, чем (~ 2 мсcat
). С другой стороны,vimcat
ручки больше типов файлов и является более точным , чемhightlight
иpygmentize
, и это еще быстрее , чем первыйvim
тогда:q
. Таким образом, это заслуживает моего выбора для этой конкретной задачи.Вероятно, вам нужен инструмент supercat (вот краткое введение, опубликованное Linux Journal).
Я понимаю, что этот ответ запоздал и что он не полностью отвечает требованиям ОП. Поэтому я добавляю это только для справки (это может быть полезно для других людей, ищущих, как раскрасить вывод текстового файла).
источник
Есть раскрашенная версия cat - ccat . Получить его с https://github.com/jingweno/ccat/ .
Установка на Linux / Windows / macOS
Это отдельный исполняемый файл, поэтому для его установки вы можете распаковать бинарную версию для своей ОС с https://github.com/jingweno/ccat/releases и скопировать бинарный файл ccat, например, в
/usr/local/bin
.Если вы хотите избежать двоичных файлов или если для вашей платформы нет двоичных файлов (например, raspberry pi и т. Д.), То вы можете поочередно компилировать из исходного кода, если у вас есть рабочая
go
среда разработки (apt install golang
на основе Linuxbrew install golang
на основе Debian или на Mac):Установка на Mac с помощью homebrew
Псевдоним для
cat
Заменить обычный
cat
наccat
добавить в~/.bashrc
:ccat
реализован в Go , поэтому это собственный двоичный файл, который работает намного быстрее, чем решения на основе Python, такие как pygments , модуль позадиpygmentize
; Я не видел заметной разницы в скорости междуcat
иccat
.источник
brew install ccat
достаточно, больше нет необходимостиbrew tap
.Лучший и самый простой способ сделать это, если у вас есть vim на вашей машине - это использовать программу,
vimcat
которая поставляется вместе сvimpager
программой.git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
Запустите vimcat:
vimcat index.html
источник
highlight
и в 3 раза медленнее, чемbat
для 30-строчного сценария bash на моей машине.source-highlight
Возможно, можно найти интересный
source-highlight
релиз под GNU : пакет, отличный отhighlight
.Выдержка из
apt-cache show source-highlight
:Я сделал несколько псевдонимов (Cat и PCat, см. Ниже), и это их вывод
Вы можете установить на Debian на основе
и добавьте его как псевдоним, например, в вашей
.bash_aliases
с чем-то вроде строки ниже.Или вы можете сделать аналогичный псевдоним (без
-i
в конце, чтобы иметь возможность передать )Среди вариантов , что можно прочитать из
man source-highlight
самых-s
подчеркивания , что можно выбрать, или силы , выделение с помощью командной строки или оставить программу этой службы:источник
less
сsource-highlight
, кто - то на GitHub дает ответ:export LESSOPEN="| source-highlight -f esc -i %s -o STDOUT"
иexport LESS=" -R "
. Очень полезно, когдаpygmentize
недоступно и не может быть установлено.Это не правильно. Терминал просто интерпретирует цветовые коды, которые выводятся на терминал. В зависимости от его возможностей он может игнорировать определенные коды форматирования / раскраски.
С man-страницы кажется, что cat не поддерживает раскраску своего вывода. Даже если бы он поддерживал раскраску, например, grep, какой должен быть цвет в текстовом файле? Подсветка синтаксиса требует знания базового языка, который не входит в простую утилиту, такую как cat.
Вы можете попробовать более мощные редакторы, такие как vim, emacs, gedit и т. Д. На платформе Unix, если ваша цель - увидеть выделенный код.
источник
cat
Не для печати файлов с номерами строк, это не для сжатия нескольких пустых строк, это не для просмотра непечатаемых символов ASCII, это для объединения файлов». - от UNIX Style или cat -v считается вредным .На OSX просто делай
brew install ccat
.https://github.com/jingweno/ccat . Как кошка, но отображает содержимое с подсветкой синтаксиса. Встроенный в Go.
источник
летучая мышь точно делает это и может быть псевдонимом для кошки
alias cat='bat'
источник
Старый вопрос, просто отвечаю за запись, чтобы обеспечить решение, которое я в итоге использовал. Возможно, это немного странно (возможно, не оригинальное назначение параметра), но:
псевдоним cgrep = 'grep -C 9000'кот что угодно | cgrep 'snozzberries'..
grep -C N
предоставит N строк контекста выше и ниже найденного элемента. Если он больше, чем вход, весь вход включается. В этом случае мы просто убедимся, что он больше, чем любой типичный вывод терминала, на который мы хотим посмотреть вручную, что, как правило, нужно делать при выделении.РЕДАКТИРОВАТЬ: Тем не менее, это решение, предложенное ниже Бени Чернявский-Паскин, является превосходным - оно соответствует (и выделяет) либо слово, которое вы ищете, или начало строки (не выделяется цветом). Чистый результат - именно то, что вы хотите.
Это новое лучшее решение, которое я видел для этой проблемы, спасибо Бени.
источник
egrep 'snozzberries|$'
В этом вопросе был рекомендован /superuser/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin
grcat
/grc
tool в качестве альтернативыsupercat
.Человек из GRC и из
grcat
; это часть пакета grc ( источники ):источник
Я написал небольшой скрипт для выполнения колоризации с использованием
pygmentize
.А затем сделайте псевдоним для сценария.
alias cat=colorize_via_pygmentize
, Также не забудьте сохранить это в ~ / .bashrc .источник
Если вы просто хотите, чтобы один вкладыш устанавливал
cat
вывод на заданный цвет, вы можете добавитьalias cat="echo -en 'code' | cat - "
на ваш
~/.$(basename $SHELL)rc
Вот суть с цветовыми кодами: https://gist.github.com/chrisopedia/8754917
Мне нравится
'\e[1;93m'
, это высокая интенсивность желтого цвета. Это выглядит так:источник
просто используйте vim и этот файл vimrc .
один лайнер:
nano -v
также может быть альтернативой.источник
Поместите в ваш ~ / .bashrc
затем
источник