Подсветка синтаксиса / раскраска кота - PullRequest
176 голосов
/ 21 октября 2011

Есть ли способ окрасить вывод cat, как это делает grep.

Для grep, в большинстве консолей он отображает цветной вывод, выделяющий искомые ключевые слова.В противном случае вы можете принудительно вызвать его, позвонив по номеру grep --color. Существует ли общий способ окрасить вывод любой программы в соответствии с вашим личным выбором.

Исходя из того, что я понимаю, сама программа не отвечает за цвета.Это оболочка.

Я использую оболочку по умолчанию во FreeBSD 5.2.1, которая выглядит так, как будто никогда не видела цветов с эпохи.

Ответы [ 17 ]

7 голосов
/ 15 июля 2015

На OSX просто сделайте brew install ccat.

https://github.com/jingweno/ccat. Как кошка, но отображает содержимое с подсветкой синтаксиса. Встроенный в Go.

4 голосов
/ 17 сентября 2018

bat точно делает это и может иметь псевдоним cat alias cat='bat'

3 голосов
/ 24 апреля 2014

Старый вопрос, просто отвечаю за запись, чтобы предоставить решение, которое я в итоге использовал.Возможно, это немного странно (возможно, не оригинальное назначение параметра), но:

alias cgrep = 'grep -C 9000'

cat any |cgrep 'snozzberries'

.. grep -C N предоставит N строк контекста выше и ниже найденного элемента.Если он больше, чем вход, весь вход включается.В этом случае мы просто убедитесь, что он больше, чем любой типичный выходной сигнал терминала, который мы хотим рассмотреть вручную, что обычно и делается при выделении.

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

cat whatever | egrep 'snozzberries|$'

Это новое лучшее решение, которое я видел для этой проблемы, спасибо Бени.

2 голосов
/ 21 апреля 2015

В этом вопросе https://superuser.com/questions/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin grcat / grc инструмент был рекомендован в качестве альтернативы supercat.

человек гр и grcat; он входит в пакет grc ( sources ):

grc - интерфейс для универсального колоризатора grcat (1)

grcat - читать со стандартного ввода, раскрашивать его и записывать в стандартный вывод

1 голос
/ 15 июня 2018

Я написал небольшой скрипт для выполнения раскрашивания, используя pygmentize.

colorize_via_pygmentize() {
    if [ ! -x "$(which pygmentize)" ]; then
        echo "package \'Pygments\' is not installed!"
        return -1
    fi

    if [ $# -eq 0 ]; then
        pygmentize -g $@
    fi

    for FNAME in $@
    do
        filename=$(basename "$FNAME")
        lexer=`pygmentize -N \"$filename\"`
        if [ "Z$lexer" != "Ztext" ]; then
            pygmentize -l $lexer "$FNAME"
        else
            pygmentize -g "$FNAME"
        fi
    done
}

А затем создайте псевдоним сценария. alias cat=colorize_via_pygmentize. Также не забудьте сохранить это в ~ / .bashrc .

0 голосов
/ 13 июня 2019

просто используйте vim и этот файл vimrc .

oneliner:

vim -c '1' -c 'set cmdheight=1' -c 'set readonly' -c 'set nomodifiable' -c 'syntax enable' -c 'set guioptions=aiMr' -c 'nmap q :q!<CR>' -c 'nmap <Up> <C-Y>' -c 'nmap <Down> <C-E>' -c 'nmap ^V <C-F><C-G>' "$@" 

nano -v также может быть альтернативой.

0 голосов
/ 09 октября 2018

Если вы просто хотите, чтобы один лайнер установил cat выход для данного цвета, вы можете добавить

alias cat="echo -en 'code' | cat - "

к вашему ~/.$(basename $SHELL)rc

Вот суть с цветовыми кодами: https://gist.github.com/chrisopedia/8754917

Мне нравится '\e[1;93m', который является высокоинтенсивным желтым.Выглядит это так: enter image description here

...