Я часто использую опцию --colour в grep, но часто я использую и меньше. Как я могу труба grep результаты, чтобы уменьшить и все же сохранить окраску. (Или это возможно?)
grep "search-string" -R * --colour | less
РЕДАКТИРОВАТЬ :
Я ищу прямое решение или что-нибудь эквивалентное этому.
*
? Со страницы руководства grep:*: The preceding item will be matched zero or more times.
Но я все еще не понимаю ..! @JeremyPowellОтветы:
Когда вы просто запускаете,
grep --color
это подразумевает,grep --color=auto
который определяет, является ли вывод выводом и, если да, включает цвета. Однако, когда он обнаруживает трубу, он отключает окраску. Следующая команда:Всегда будет включать окраску и отменять автоматическое определение, и вы получите выделение цветом
less
.РЕДАКТИРОВАТЬ: Хотя использование просто
less
работает для меня, возможно, старая версия требует-R
флаг для обработки цветов, как это было предложено.источник
less -R
для того, чтобы цветовое кодирование было интерпретировано менее корректноless
, это может зависеть от версии.grep pattern file | grep -v badpattern | grep --colour=always pattern | less -R
, что полностью соответствовало моим потребностям. (Еще раз спасибо!)less
и поэтому упустили возможность иметь специальныйcolorless
инструмент. Только для названия это должно было быть сделано! Я, вероятно, должен написать патч, который автоматически вызывает -R, когда исполняемый файл запускается какcolorless
.$LESS
установить с-R
.Вы можете поместить это в свой
.bashrc
файл:или создайте псевдоним как это:
и вам нужно будет использовать
-R
опцию дляless
, как указано оттудаисточник
grep
с помощьюGREP
или переопределить--color
опцию вручную.В таком случае я предпочитаю создавать небольшие sh-файлы и помещать их в них
/usr/local/bin
.Я обычно использую
grep
рекурсивный способpwd
, так что это мой личный сценарий:А потом я просто скопировал его как
/usr/local/bin/g
(да, я часто его использую)источник
g() { grep --color=always -r "$@" . | less -R }
работает идентично и, вероятно, даст (чуть-чуть) лучшую производительность.Не используйте псевдоним "grep", лучше псевдоним "less", который никогда не используется оболочками. По твоему
.bashrc
просто поставьalias less="less -r"
.источник
grep --color=always
иless -R
. Обратите внимание, что grep знает только, что он передается в какой-то другой процесс, и--color=auto
опция использует только эту информацию, чтобы решить, будут ли выводить цвета или нет.less
параметр-r
отличается от-R
. Наверное-R
, безопаснее.less
пример, в котором уже используется опция --color.less
поддерживает$LESS
переменную окружения. Таким образом, вместо псевдонима,export LESS='-R'
может быть предпочтительнее.Мне нужно бежать
с флагом -r после less для запуска.
источник
*
? Со страницы руководства grep:*: The preceding item will be matched zero or more times.
Но я все еще не понимаю ..!