Чи може `cat` показувати файли за допомогою розмітки коду в кольорах?


45

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

Чи можна catзробити таке?


Це , можливо , вже є відповідь тут
Уілф

ha @wilf Я знайшов той самий код з 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>

5
Відкрийте файл як pygmentize -g <filename>, для -gперемикання важливо обробляти файл без лексеру. наприклад, якщо ви спробуєте /etc/fstabвідкрити без -gнього, це не вдасться.
souravc

Спасибі @souravc Додав його до відповіді. Цікаво, що цей аргумент, здається, не згадується на сторінці man або на сторінці довідки
txwikinger

2
Ну я з цим багато грав. Ви можете його знайти, спробуйте pygmentize --help Якщо -gце передано, спробуйте відгадати лексеру зі вмісту файлу або переведіть його як звичайний текст, якщо це не вдається (це може працювати для stdin).
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себе, але ви можете використовувати щось на зразок джерела highlite або суперката або виділення

Джерело-висвітлення

Ця програма, отримана з вихідного файлу, створює документ із виділенням синтаксису. Він також пропонує бібліотеку виділень C ++ (нова) (починаючи з версії 3.0).

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

Посібник з установки:

Дивіться файл ВСТАНОВИТИ, щоб отримати детальні інструкції зі встановлення та монтажу; у будь-якому випадку, якщо ви звикли до компіляції програмного забезпечення Linux, яке постачається з джерелами, ви можете просто дотримуватися звичайної процедури, тобто зніміть файл, який ви завантажили в каталог, а потім:

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

Supercat

Це домашня сторінка Supercat. Supercat - це програма, яка розфарбовує текст на основі відповідності регулярним виразам / рядкам / символам. Supercat підтримує вихід HTML, а також стандартний текст ASCII. На відміну від деяких програм для забарвлення тексту, які існують, 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

Потрібно: Пігменти ( sudo apt-get install python-pygments python3-pygments) Додайте його як функцію до bash .functions і дайте йому ім’я, як color ()


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


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>

Чи є спосіб увімкнути прокрутку стрілками вгору та вниз під час використання, 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яке не вимагає закриття натискання клавіш.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.