it-swarm.xyz

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

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

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

ПРАВКА:

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

236
Jeremy Powell

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

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

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

Правка: Хотя использование только less работает для меня, возможно, более старая версия требует, чтобы флаг -R обрабатывал цвета, как это было предложено.

264
drrlvn

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

export GREP_OPTIONS="--color=always"

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

alias grepc="grep --color=always"

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

27
Dennis Williamson

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

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

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

7
Iazel

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

1
not2qubit

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

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

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

0
Pierre François