226

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

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

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

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

5 ответов5

254

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

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

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

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

27

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

export GREP_OPTIONS="--color=always"

или создайте псевдоним как это:

alias grepc="grep --color=always"

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

5

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

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

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

1

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

0

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

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

с флагом -r после less для запуска.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .