it-swarm-eu.dev

Ottenere risultati colorati quando si usa un tubo da grep a less

Uso molto l'opzione -colour di grep, ma spesso uso anche meno. Come posso ridurre i risultati di grep a meno e preservare la colorazione. (O è possibile?)

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

MODIFICARE:

Sto cercando una soluzione diretta o qualcosa di equivalente a questo.

236
Jeremy Powell

Quando esegui semplicemente grep --color implica grep --color=auto che rileva se l'output è un terminale e in tal caso abilita i colori. Tuttavia, quando rileva un tubo disabilita la colorazione. Il seguente comando:

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

Attiva sempre la colorazione e sovrascrive il rilevamento automatico, e otterrai l'evidenziazione del colore in less.

EDIT: Anche se per me funziona solo less, forse la versione più vecchia richiede il flag -R per gestire i colori, come suggerito da lì.

264
drrlvn

Puoi inserire questo nel tuo file .bashrc:

export GREP_OPTIONS="--color=always"

o creare un alias come questo:

alias grepc="grep --color=always"

e dovrai usare l'opzione -R per less, come indicato da lì

27

In questo caso, preferisco creare file sh piccoli e metterli su /usr/local/bin.
Di solito uso grep nel modo ricorsivo sul pwd, quindi questo è il mio script personale:

#!/bin/sh
grep --color=always -r "[email protected]" . | less -R

E poi l'ho appena copiato come /usr/local/bin/g (sì, lo uso molto)

7
Iazel

Non alias "grep", meglio l'alias "less" che non è mai usato dalle shell. Nel tuo .bashrc inserisci: alias less="less -r".

1
not2qubit

Ho bisogno di correre

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

con -r flag dopo less , per farlo funzionare.

0
Pierre François