Может ли `cat` показывать файлы, используя разметку кода в цветах?

45

Иногда я быстро хочу просмотреть содержимое файла из командной строки. Для этого я, конечно, использую cat, но это часто исходные файлы на Python , Java или в простом HTML . Для этих файлов было бы удобно, если catбы можно было придать файлам некоторую цветовую разметку, чтобы их было легче читать.

Можно catсделать такую ​​вещь?

kramer65
источник
Это , возможно , уже есть ответ здесь
Уилф
ха @ уилф Я нашел тот же код с Google: D Также стоит отметить эту тему на SO: superuser.com/questions/84426/…
Rinzwind
@Rinzwind - я искал stackoverflow, так как он должен был появиться ;-)
Уилф
Этот вопрос напоминает мне о cat -vвреде .
Снежок

Ответы:

48

catне в состоянии это сделать. Тем не менее, возможно, фрагменты могут помочь вам там. Это скрипт на python и может быть установлен через apt-get

sudo apt-get install python-pygments

или легко загружается и устанавливается через easy_install.

Он поддерживает множество исходных кодов языков , а также языков разметки

Используется

pygmentize -g <filename>
txwikinger
источник
5
Открыть файл как pygmentize -g <filename>, -gключ важен для обработки файла без лексера. например, если вы попытаетесь /etc/fstabоткрыть без -gнего не удастся.
souravc
Спасибо @souravc Добавил его в ответ. Интересно, что этот аргумент, по-видимому, не упоминается на странице справки или на странице справки
txwikinger
2
Ну, я много играл с этим. Вы можете найти его, попробовать « pygmentize --help Если -gпройдено», попытаться угадать лексер по содержимому файла или передать простым текстом, если это не удастся (это может работать для стандартного ввода).
souravc
4
Это лучший, тогда псевдоним кота пигментирует -g и ты золотой. В рыбе это просто как funced cat... type pygmentize -g $argv... save..funcsave cat.
Элайджа Линн
по моему bashrcя добавил: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
Антониос Хаджигеоргалис
19

Не от catсамого себя, но вы можете использовать что-то вроде подсвечивания источника или суперкадра или выделения

Источник-Изюминка

Эта программа, учитывая исходный файл, создает документ с подсветкой синтаксиса. Он также предоставляет библиотеку подсветки C ++ (новая) (начиная с версии 3.0).

Подсветка исходного кода читает спецификации исходного языка динамически, поэтому его можно легко расширить (без перекомпиляции источников) для обработки новых языков. Он также читает спецификации выходного формата динамически, и, таким образом, его можно легко расширить (без перекомпиляции источников) для обработки новых выходных форматов. Синтаксис этих спецификаций довольно прост (взгляните на руководство).

Руководство по установке:

Смотрите файл INSTALL для подробных инструкций по сборке и установке; в любом случае, если вы привыкли к компиляции программного обеспечения Linux, поставляемого с исходными текстами, вы можете просто следовать обычной процедуре, то есть распаковать загруженный файл в каталог, а затем:

 cd <source code main directory>
 ./configure
 make
 make install

Supercat

Это домашняя страница Supercat. Supercat - это программа, которая раскрашивает текст на основе соответствия регулярным выражениям / строкам / символам. Supercat поддерживает вывод html, а также стандартный текст ASCII. В отличие от некоторых существующих программ для раскрашивания текста, Supercat не требует, чтобы вы были программистом, чтобы создавать правила раскрашивания.

Если вы написали файл конфигурации Supercat для стандартного типа файлов, пожалуйста, не стесняйтесь обращаться ко мне по адресу "bug-spc (at) nosredna (dot) net" для возможного включения в дистрибутив Supercat.

Или с функцией ( источником ):

#!/bin/bash#!/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

Требуется: Pygments ( sudo apt-get install python-pygments python3-pygments) Добавить его как функцию в bash .functions и дать ему имя, например color ().

Rinzwind
источник
14

Как от этого ответа здесь , вы можете использовать python-pygmentsпакеты для выделения материала. Сначала сделайте:

sudo apt-get install python-pygments python3-pygments

тогда:

pygmentize -g FILENAME

тогда попробуйте:

введите описание изображения здесь

Вы также можете установить его как псевдоним, как в ответе, который я связал - в основном, запустите это:

echo "alias catc='pygmentize -g'" >> ~/.bash_aliases 
chmod +x ~/.bash_aliases

Закройте терминал, откройте его снова, и catcтеперь команда должна работать - если это не так, убедитесь, что эти строки находятся в .bashrcфайле и не закомментированы:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Другое дело было бы просто использовать nano:

nano testfile

введите описание изображения здесь

Уилф
источник
6

man view или man vim

Основное использование: view <filename>

Выйти: :q<Return>(добавьте <Esc>первый, если используете vim) или ZZ(дважды заглавные z).

Текстовый редактор программиста уже vimимеет все, что вам нужно, и, вероятно, уже является частью вашей системы.

vimимеет режим только для чтения, активированный с помощью viewили vim -R. Если все, что вы хотите сделать, это просмотреть размеченный файл, этого должно быть достаточно.

Простой в использовании, навигационный, доступен везде. Нет необходимости возиться с установкой нового программного обеспечения или написанием сценариев bash.

другой бен
источник
Я знаю. Дело в том, что открытие и закрытие VIM не быстрое. Я хочу мгновенно просмотреть файл, а затем продолжить в командной строке. Вот почему я нашел такой хороший пигмент. Мгновенный результат, нет выхода из программы или что-то еще .. :)
kramer65
1
@ kramer65 Хорошо, конечно, это ваши предпочтения, но вам не нужно «открывать» vimили viewвы просто указываете файл: view file.pyтак что никакой разницы нет cat. Конечно, вам нужно закрыть его, но на самом деле :q<Return>или ZZнет сложных задач.
другой бен
Основная проблема в том, что vi / vim / view не записывает в stdout, поэтому я не могу легко написать команду, глядя на синтаксис, выделенный выше.
Jack_Hu
4

Можно проверить ccat .

Это добавляет подсветку синтаксиса к выходным файлам.

Алан Донг
источник
3

catне может производить подсветку синтаксиса исключительно. Тем не менее, вы можете сделать это следующим образом, используя python-pygments. Сначала установите его из терминала как,

sudo apt-get install python-pygments

Теперь скопируйте функцию ниже ~/.bashrc. Это даст вам то, что вы хотите, более того, оно сохранит свойства,cat иначе нет смысла использоватьcat

catc(){
    cat "$@" > /tmp/.tmp
    pygmentize -g /tmp/.tmp
    rm /tmp/.tmp
}

Источник ~/.bashrcкак,

. ~/.bashrc

Это даст цветную продукцию,

catc <filename>

Он также соединится с цветом,

catc <file1> <file2> ... <filen>
souravc
источник
Есть ли способ включить прокрутку со стрелками вверх и вниз при использовании? pygmentize? Я открываю его с помощью команды формы xterm -e "pygmentize -g <filename>" и нахожу, что единственный способ прокрутки - это использовать полосу прокрутки. Я попытался передать вывод, lessно это привело к выводу мусора.
Лео Симон
да, вы можете использовать pygmentizeс меньшими затратами. Создайте функцию bash lesscследующим образом:lessc () { pygmentize -gf terminal "$1" | less -R }
souravc
2

Летучая мышь - кошка-клон с крыльями

Вы также можете проверить, batкакие из следующих функций:

  • Подсветка синтаксиса
  • Git интеграция
  • При желании показаны непечатные символы
  • Автоматический пейджинг с less
  • Конкатенация файлов в качестве замены для catперенаправления

 предварительный просмотр

Снимок экрана летучей мыши, показывающий цветной файл

Фото взято с официального GitHub

Установка

Вы можете получить последний пакет Debian здесь и установить его с:

sudo dpkg -i bat_0.10.0_amd64.deb

Адаптация номера версии и архитектуры.

Андреа Лаззаротто
источник
0

Другие ответы охватывают, почему catне в состоянии это сделать. Хотя вы можете сделать это с меньшими затратами, используя lesspipe.sh .

Фуад сауд
источник
0

Вместо установки стороннего пакета вы можете просто использовать его geditдля быстрого просмотра файла с подсветкой синтаксиса. Например, скопируйте адресную строку выше и вставьте в свой терминал:

gedit https://askubuntu.com/questions/405960/can-cat-show-files-using-code-markup-in-colors

Вы увидите этот вопрос в HTML с форматированными цветами:

gedit https.png

  • Вы можете использовать знакомые geditклавиши навигации
  • Вы можете включить / выключить перенос строки
  • Вы можете использовать плагины, как я установил для 80-символьного желоба и обзора документов (справа) с ползунком миниатюр
  • Единственное предостережение - вам нужно помнить Alt+, F4чтобы быстро закрыть окно для симуляции, для catкоторого не требуется нажатия клавиш для закрытия.
WinEunuuchs2Unix
источник