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

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

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

41 голос | спросил kramer65 15 Jpm1000000pmWed, 15 Jan 2014 20:44:37 +040014 2014, 20:44:37

7 ответов


44

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

sudo apt-get install python-pygments

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

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

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

pygmentize -g <filename>
ответил txwikinger 15 Jpm1000000pmWed, 15 Jan 2014 21:05:43 +040014 2014, 21:05:43
18

Не из cat, но вы можете использовать что-то вроде source highlite или supercat или highlight

  

Source-выделить

     

Эта программа, заданная исходным файлом, создает документ с подсветкой синтаксиса. Он также предоставляет библиотеку выделения 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 (точка) net» для возможного включения в дистрибутив суперкарта.

     

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

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

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

ответил Rinzwind 15 Jpm1000000pmWed, 15 Jan 2014 21:05:27 +040014 2014, 21:05:27
12

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

sudo apt-get install python-pygments python3-pygments

, то

pygmentize -g FILENAME

, тогда получим go:

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

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

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

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

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

Еще одна вещь - просто использовать nano:

nano testfile

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

ответил Wilf 15 Jpm1000000pmWed, 15 Jan 2014 21:08:43 +040014 2014, 21:08:43
5

man view или man vim

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

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

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

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

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

ответил a different ben 16 Jam1000000amThu, 16 Jan 2014 09:55:53 +040014 2014, 09:55:53
3

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

sudo apt-get install python-pygments

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

 catc(){
    cat "[email protected]" > /tmp/.tmp
    pygmentize -g /tmp/.tmp
    rm /tmp/.tmp
}

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

. ~/.bashrc

Он выдаст цветной вывод,

catc <filename>

Он также будет конкатенировать с цветом,

catc <file1> <file2> ... <filen>
ответил souravc 15 Jpm1000000pmWed, 15 Jan 2014 22:12:22 +040014 2014, 22:12:22
1

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

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

ответил Alan Dong 27 AM00000030000003331 2015, 03:08:33
0

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

ответил Fuad Saud 22 Jam1000000amWed, 22 Jan 2014 02:23:46 +040014 2014, 02:23:46

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132