Вопрос: Получать цвета меньше или больше


Когда я прочитал файл в Linux с помощью команды less или more, как я могу получить контент в цветах?


340
2018-03-09 10:44


Источник


Это похоже на: superuser.com/questions/36022/less-and-grep-color - Помогает ли это? - Jonik


Ответы:


Вы можете использовать мощь pygmentize с меньшим - автоматически! (Не нужно трубить вручную).

устанавливать pygments с вашим менеджером пакетов или пунктом (возможно, называется python-pygments) или получить его здесь http://pygments.org/download/,

Создать файл ~/.lessfilter

#!/bin/sh
case "$1" in
    *.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
    *.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
    *.lsp|*.l|*.pas|*.p|*.xml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
    *.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass)
        pygmentize -f 256 "$1";;
    .bashrc|.bash_aliases|.bash_environment)
        pygmentize -f 256 -l sh "$1"
        ;;
    *)
        grep "#\!/bin/bash" "$1" > /dev/null
        if [ "$?" -eq "0" ]; then
            pygmentize -f 256 -l sh "$1"
        else
            exit 1
        fi
esac

exit 0

В вашей .bashrc Добавить

export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'

Кроме того, вам необходимо сделать ~/.lessfilter исполняемый исполняемый файл

chmod u+x ~/.lessfilter

Протестировано на Debian.

Идея исходила из старого сообщения в блоге из создатели пигментов, но исходный пост больше не существует.


123
2017-09-20 03:29



Если вы хотите иметь раскраску файлов исходного кода, вам также необходимо сделать исполняемый файл ~ / .lessfilter, выполнив chmod u+x ~/.lessfilter, Вы также должны иметь pygmentize (pygments.org/download) установлен. - Sergiy Byelozyorov
Может ли кто-нибудь подтвердить, что это работает, поскольку это не влияет на меня, когда я выполняю команду вроде ls -l | less - puk
Любая идея, как связать это с lessoken. он устанавливается с помощью этой формы: LESSOPEN = "lessopen.sh% s" - Gregory
@puk вы можете сделать что-то вроде ls --color=always -l | less -R, Очевидно, что нужно много набирать, но вы могли бы использовать его как нечто вроде ll, То есть, если вы не хотите использовать какие-либо дополнительные библиотеки. - PhilT
добавил комментарий Сергея Белосторова в ответ. - andrybak


Попробуйте следующее:

less -R

из man less:

-r или --raw-control-chars

Заставляет выводить «необработанные» управляющие символы. (...)

-R или --RAW-CONTROL-CHARS

подобно -r, но только «ANSI» «цветовые» escape-последовательности выводятся в «сырой» форме. (...)


402
2018-03-09 10:48



Это полезно, когда сам файл содержит коды эвакуации, которые необходимо будет отображать. - Nitrodist
Раньше я знал о менее -r, но поиск в файле с помощью «/» продолжал воспитывать неправильные строки. -R, похоже, делает лучшую работу. Спасибо за совет. - Amos Shapira
Следует отметить, что большинство программ используют isatty(2) syscall, чтобы проверить, является ли их стандартный вывод терминалом, и обычно отключает раскрашенный вывод, если это не так. Для любой трубы меньше, isatty вернет 0. Чтобы проверить, работает ли это, попробуйте echo -e '\x1b[32;1mtest\x1b[m' | less -r - mic_e
Этот ответ не преуспевает в том, что на самом деле что-то тестирует. - Michael Wolf
Вы также можете ввести -R когда вы уже открылись less для достижения этой цели. - Scz


Я получил ответ в другом посте: Меньше и Grep: Получение цветных результатов при использовании трубы от grep до менее

Когда вы просто запускаете grep --color Это   подразумевает grep --color=auto который   определяет, является ли выход   терминал, и если да, значит, цвета.   Однако, когда он обнаруживает трубу,   отключает окраску. Следующие   команда:

grep --color=always "search string" * | less -R

Всегда будет включать окраску и   переопределить автоматическое обнаружение и   вы получите цветную подсветку в   Меньше.

Предупреждение: не ставьте --color=always как псевдоним, иногда это прерывает. Вот почему --color=auto вариант.


114
2018-04-27 04:19



Приятно, спасибо. За исключением того, что мне нужно использовать -R как вариант less, также. - naught101
я верю grep -R для указания рекурсивного поиска. less -R необходимо для less правильно выплюнуть цвета. grep --color=always [grep cmds] | less -R работает для меня на OS X 10.7.3! - Steven Lu
@ naught101 @Steven Lu Отредактировано, хотя кажется, что некоторым людям может не понадобиться использовать less -R (по словам автора оригинального сообщения, в любом случае). - jtpereyda
Есть ли все-таки, чтобы grep знал, что команда pipe меньше -R, а затем просто окрашивает? Таким образом, нам не нужно ставить --color = всегда и меньше -R все время. - A-letubby
Это, безусловно, самый простой рабочий ответ. Благодаря! - Danny Staple


использование view вместо less, Он открывает файл с vim в режиме readonly.

Это практически цветной less: пейджер, в котором вы можете искать / (и более). Единственным недостатком является то, что вы не можете выйти с Q но вам нужно :q

Кроме того, вы получаете ту же окраску, что и vim (поскольку вы на самом деле используете vim).


30
2017-09-24 09:50



Как насчет производительности больших файлов? Подсветка синтаксиса Vim знает, что медленная работа над огромными файлами. - pihentagy
Я не знаю, какова ваша ценность для «большого», но открытие файла с размером 10000 строк происходит мгновенно, поиск внутри включен. - Riccardo Galli
Я поддержал (я не знал о view), но другой недостаток заключается в том, что j / k / up / down не мгновенно прокручивается, так как есть курсор. - Tyler Collier
Обратите внимание, что вам может потребоваться добавить view - когда трубопроводы - user45909
vim является редактором, который загружает полный файл в память, тогда как less это пейджер, который загружает файл только частично в память. Вы узнаете разницу с огромными файлами. - sjas


Использовать VIM в качестве подсветки синтаксиса,


12
2018-03-09 13:25



нет, я попросил больше (или меньше), а не vim, спасибо в любом случае - flow
Очевидно, подсветка синтаксиса по умолчанию не построена более или менее, поэтому обходной путь использует псевдоним для одного из макросов VIM. Он ведет себя более или менее как более или менее. :) - churnd
Если вы предпочитаете использовать vim вместо эмуляции vim меньше, вы можете просто сделать ... | vim - читать с stdin или ... | vim -R - только для чтения (во избежание «Без записи после последнего изменения» при выходе). Псевдоним для быстрого использования: alias r='vim -R -' тогда ... | r - bain


pygmentize поддерживает -g возможность автоматически угадывать используемый лексер, который полезен для файлов, считанных с STDIN без проверки типа расширения.

Используя это, вам нужно всего лишь установить следующие 2 экспорта в вашем .bashrc без каких-либо дополнительных скриптов:

export LESS='-R'
export LESSOPEN='|pygmentize -g %s'

10
2018-03-12 07:17



Краткая и эффективная. Я предпочитаю определять псевдоним, потому что иногда лучше. Итак: alias lesc = 'LESS = "- R" LESSOPEN = "| pygmentize -g% s" less' - Tiago


Вы не сказали, что должен означать этот цвет, например. какими должны быть цвета для текстового файла?

Если вы хотите выделить синтаксис для исходного кода, вам понадобится подсветка исходного кода. Я иногда использую pygmentize как это

pygmentize file.cpp | less

или

pygmentize file.cpp | more

Есть другие маркеры вокруг.

Это довольно быстро. Если вы не против стрельбы vim существует режим только для чтения, который может дать вам подсветку синтаксиса, если вы его используете в vim,

view file.cpp

или, альтернативно, см. ответ churnd.


9
2018-03-09 13:30