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


Я часто использую параметр -colour grep, но часто использую меньше. Как я могу тратить результаты grep на меньшее и по-прежнему сохранять окраску. (Или это возможно?)

grep "search-string" -R * --colour | less 

РЕДАКТИРОВАТЬ:

Я ищу прямое решение или что-то подобное этому.


211
2017-09-04 21:46


происхождения


возможный дубликат Получить цвета в команде «меньше» - Ciro Santilli 新疆改造中心 六四事件 法轮功


ответы:


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

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

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

РЕДАКТИРОВАТЬ: Хотя использование только less работает для меня, возможно, более ранняя версия требует -R флаг для обработки цветов, как это предлагается.


243
2017-09-04 22:35



Вы должны использовать less -R для кодирования цвета, которое будет интерпретироваться менее правильно - therefromhere
Это сработало для меня less, он может быть зависимым от версии. - drrlvn
A (надеюсь) полезное добавление: мне нужно было исключить некоторые совпадения, но сохранить окраску, поэтому я на самом деле оказался grep pattern file | grep -v badpattern | grep --colour=always pattern | less -R, который удовлетворил мои потребности. (Еще раз спасибо!) - Owen Blacker
Я не могу поверить, что они только что реализовали функцию обработки цвета в less и поэтому упустили шанс получить colorless инструмент. Только для имени это должно было быть сделано! Вероятно, я должен написать патч, который автоматически запускает -R, когда двоичный файл запускается как colorless, - Christian
@OwenBlacker Это может быть не псевдоним. Ты можешь иметь $LESS с -R, - greyfade


Вы можете поместить это в свой .bashrc файл:

export GREP_OPTIONS="--color=always"

или создать псевдоним следующим образом:

alias grepc="grep --color=always"

и вам нужно будет использовать -R вариант для less, как указано в них


27
2017-09-05 10:46



Предупреждение !: GREP_OPTIONS = "- color = always" может сломаться многие скрипты, которые используют grep (или (e | f) grep). - mctylr
Да, лучше просто алиса grep. Вы всегда можете получить чистый grep с GREP, или переопределить --color вариант вручную. - asmeurer
Это не работает для меня, псевдоним действительно работает. - saeedgnu


В этом случае я предпочитаю создавать небольшие файлы sh и накладывать их на /usr/local/bin,
Обычно я использую grep рекурсивным образом на pwd, так что мой личный сценарий:

#!/bin/sh
grep --color=always -r "$@" . | less -R

И тогда я только что скопировал это как /usr/local/bin/g (да, я использую его много)


4
2017-09-30 21:48



Почему бы просто не использовать функции оболочки для такого рода вещей? g() { grep --color=always -r "$@" . | less -R } работает одинаково и, вероятно, даст (точнее) лучшую производительность. - 00dani


Не используйте псевдоним «grep», лучше псевдоним «меньше», который никогда не используется оболочками. В вашей .bashrc просто поставьте: alias less="less -r",


0
2018-01-20 10:28



Не совсем верно. Нужно использовать и то и другое  grep --color=always а также less -R, Обратите внимание, что grep знает, что он передается в другой процесс, и --color=auto опция использует исключительно эту информацию, чтобы решить, будут ли выводить цвета или нет. - brandizzi
Обратите внимание, что less вариант -r отличается от -R, Вероятно -R безопаснее. - Craig McQueen
Так зачем же проголосовать за мое решение. ОП конкретно просит less с примером, уже использующим опцию `--color '. - not2qubit
Здесь псевдоним, вероятно, нежелателен. less поддерживает $LESS переменная среды. Таким образом, вместо псевдонима, export LESS='-R' может быть предпочтительнее. - greyfade


Мне нужно бежать

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

с  флаг после Меньше, чтобы это можно было запустить.


0
2018-01-18 10:51