Если я хочу вывести файл с исходным кодом C с подсветкой синтаксиса, могу ли я использовать cat
?
4 ответа
Пакет 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, но это может быть нежелательно.
Чтобы вывести выделенный синтаксис кода с помощью чего-то вроде 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'
Чтобы решить эту проблему, я использовал выделение. Я сделал функцию, которая пытается распечатать файл с подсветкой синтаксиса, и если он не работает, он просто использует 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
}
Наслаждайтесь!
Нет, у cat нет возможностей подсветки синтаксиса. Если вы хотите просмотреть исходный код с подсветкой синтаксиса, вставьте его в vim или в свой редактор (с подсветкой синтаксиса). Таким образом, вы можете даже пролистывать выходные данные, если это длинный файл, используя Ctrl + F (вперед) и Ctrl + B (назад).