Есть ли варианты, чтобы кошка выводила цвета?

14649
Jichao

Если я хочу вывести файл с исходным кодом C с подсветкой синтаксиса, могу ли я использовать cat?

18

4 ответа на вопрос

18
rgm

Пакет GNU, source-highlight, похоже, делает свое дело (хотя и не использует cat - как отмечает Джон Т, это не возможно для cat специально). Он доступен через apt-get в Ubuntu и требует библиотеки регулярных выражений Boost. Проверьте менеджер пакетов, чтобы увидеть, доступны ли оба, иначе вы можете получить их из Интернета. Я думаю, что на странице GNU, на которую вы ссылались ранее, есть ссылка на Boost.

После установки я создал новый скрипт в моем пути с именем ccat . Сценарий выглядит так:

#!/bin/bash src-hilite-lesspipe.sh $1 

Ничего особенного, просто упрощение меньшего количества скриптов, которые они включают в источник-подсветка. Он действует как кошка, когда вызывается таким образом.

Включенный скрипт less - это тоже хороший скрипт для использования. Я только что добавил следующее .bashrc :

export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s" export LESS=' -R ' 

Этот сценарий также включен в онлайн-руководство для источника.

Я полагаю, что вы могли бы использовать псевдоним cat для вызова src-hilite-lesspipe.sh $ 1, если вы хотите полностью игнорировать cat, но это может быть нежелательно.

Лично я предпочитаю псевдоним однострочным bash-скриптам, заканчивающимся на `$ 1` :). mgalgs 12 лет назад 4
Да, mitch_feaster, вы на месте. :] rgm 12 лет назад 0
Работает на Mac тоже с `brew install source-highlight`. Невозможно покрасить yaml :( Sairam 11 лет назад 2
9
michaelvobrien

Чтобы вывести синтаксис выделенного кода с чем-то вроде cat, я создал ccatкоманду, следуя инструкциям на http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/ .

#!/bin/bash if [ ! -t 0 ];then file=/dev/stdin elif [ -f $1 ];then file=$1 else echo "Usage: $0 code.c" echo "or e.g. head code.c|$0" exit 1 fi pygmentize -f terminal -g $file 

Чтобы вывести синтаксис выделенного кода с чем-то вроде less, я использую vim как меньшую замену.

alias less='/usr/share/vim/vim72/macros/less.sh' 
Как установить pygmentize: easy_install --install-dir $ SOMEDIR Pygments psihodelia 10 лет назад 0
Мне нравится этот тип портативных решений. Я добавил этот скрипт как функцию к моему bash `.functions` как` colorize () {...} ` guneysus 10 лет назад 0
3
Kevin

Чтобы решить эту проблему, я использовал выделение . Я сделал функцию, которая пытается распечатать файл с подсветкой синтаксиса, и если он не работает, он просто использует cat для печати файла. Вы можете изменить тему подсветки синтаксиса на любую, какую захотите.

function hl { # Overrides the cat command to use syntax highlighting # Highlight with 'moria' theme to terminal, and suppress errors highlight $1 -s moria -O xterm256 2> /dev/null  if (($? != 0)); then # If the command had errors cat $1 # Just cat the file out instead fi } 

Если вы работаете на Mac и используете Homebrew (очень рекомендуется!), Вы можете установить выделение, запустив brew install highlight. В противном случае он должен быть доступен на большинстве других менеджеров пакетов и может быть загружен здесь .

Я также сделал функцию, чтобы распечатать файл с подсветкой синтаксиса как HTML и открыть его в браузере для печати (опирается на openкоманду в OS X):

function hlprint { # Print with line numbers and 'moria' theme highlight $1 -l -o print.html -s moria open print.html # Open in browser sleep 5 # Give the browser time to open rm print.html highlight.css # Remove output files } 

Наслаждайтесь!

1
John T

Нет, у cat нет возможностей подсветки синтаксиса. Если вы хотите просмотреть исходный код с подсветкой синтаксиса, вставьте его в vim или в свой редактор (с подсветкой синтаксиса). Таким образом, вы можете даже пролистать вывод, если это длинный файл, используя Ctrl+ F(вперед) и Ctrl+ B(назад).

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