Opzione colore predefinita Grep


11

grep è uno dei comandi più comunemente usati in Linux. Mi sembra che la sua caratteristica di base per evidenziare la stringa che hai cercato sulle linee di output. questo può essere ottenuto con l'opzione --color.

Digitare --color ogni volta è fastidioso e anche non produttivo. C'è un modo per cambiare grep per comportarsi come grep --color.

Ho provato a scrivere un piccolo script chiamato grepd e l' ho aggiunto alla mia variabile PATH. Ma lo script non funziona sull'input grepd . Eventuali suggerimenti per favore.

#!/bin/bash
grep --color $1 $2

Risposte:


21

Aggiungi semplicemente il seguente alias al file di configurazione della tua shell, ad esempio .bashrco .bash_profile(a seconda di quale usi, vedi qui ):

alias grep='grep --color=auto'

Puoi semplicemente usarlo come grep.

Di solito non è necessario creare script quando semplici alias di comando fanno la stessa cosa bene. In effetti il ​​tuo script non funzionerebbe nemmeno se volessi passare più opzioni a grep. Nel caso in cui sia necessario un piccolo frammento in grado di gestire argomenti, è necessario utilizzare le funzioni .


9
O equivalentemente, imposta la GREP_OPTIONSvariabile d'ambiente:export GREP_OPTIONS='--color=always'
Jérôme

Questo non aggiunge l'opzione colore se usi fgrep o egrep, per quelli avresti bisogno di alias separati. Inoltre, @ Jérôme: GREP_OPTIONS è contrassegnato come deprecato nella pagina man di grep.
Thayne,

@Thayne solo per GNU grep e non per altri come FreeBSD grep. E per quanto ne so, sono passati 4 anni da quando è stato modificato ed è ancora supportato. Ammortato non significa rimosso.
cde

Questo è quello che faccio di solito, tuttavia in alcuni casi non funziona bene. Per esempio: some_command | xargs grep foonon sarà perché colorized xargs non usa l'alias.
TM.

2
#!/bin/sh
exec grep --color "$@"

Questo illustra il modo standard di "racchiudere" un comando con uno script di shell, quando il comando non funziona esattamente come piace a te.

I execevita di creare un processo in più (uno per la sceneggiatura e una per grep). Se lo desideri, potresti lasciarlo fuori.

Il "$@"viene sostituito da tutti gli argomenti dello script, indipendentemente da quanti ce ne siano. Conserva correttamente gli argomenti con spazi e altri caratteri speciali per la shell.


"Exec grep" dovrebbe essere "exec / bin / grep"
Berend de Boer,

2
@BerenddeBoer Non proprio. "exec grep" funzionerebbe bene. Non c'è niente di sbagliato nel cercare grep nel percorso.
Kenster,

-1

prova a mettere export GREP_COLORS='AUTO'nel vostro ~ / .bashrc - per me funziona.

a partire dal man grep

       --color[=WHEN], --colour[=WHEN]
          Surround  the  matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences
          to display them in color on the terminal.  The colors are defined by the environment variable GREP_COLORS.  The deprecated environment variable GREP_COLOR is still supported, but  its  setting
          does not have priority.  WHEN is never, always, or auto.

5
GREP_COLORSè l'insieme dei colori reali. L'impostazione su AUTOnon dovrebbe mostrare alcun colore. export GREP_OPTIONS = '- color = auto' dovrebbe essere la risposta.
user137369
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.