Eu estava brincando com o cenário GREP_OPTIONS
e não conseguia fazê-lo funcionar. Apenas curioso sobre o porquê.
Saída de comandos de teste simples:
richard@ubuntu:~$ echo $GREP_OPTIONS
richard@ubuntu:~$
richard@ubuntu:~$ ls | grep o
Desktop
downloads
Dropbox
ebooks
workspace
richard@ubuntu:~$ ls | grep o --color=always | less -R
richard@ubuntu:~$ export GREP_OPTIONS="--color=always"
richard@ubuntu:~$ ls | grep o | less -R
- O 1º grep é emitido para o terminal em cores (cada 'o' é vermelho)
- O segundo grep gera menos cores (o mesmo que 1)
- Mas o terceiro grep gera menos, mas em preto e branco - mas isso deve ser colorido.
Portanto, parece que o grep está ignorando GREP_OPTIONS
. Isso é um bug ou estou fazendo algo errado?
(Ubuntu 12.04.2, GNU grep 2.10)
grep v3.1
reclama em voz alta deGREP_OPTIONS
todas as invocações:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
alias grep='GREP_COLOR="1;33;40" LANG=C grep --color=auto'
para destacar em amarelo.Respostas:
Se
grep o
produz saída colorida,grep
é um alias paragrep --color=auto
ougrep --color=always
(ou possivelmente mais opções) ouGREP_OPTIONS
é definido como um valor que contém--color=auto
ou--color=always
. Como$GREP_OPTIONS
está vazio, deve ser o alias.Como
grep o | less -R
não mostra cores, o alias deve sergrep --color=auto
(uma escolha sensata). Com o alias, ogrep
comando sempre recebe a--color
opção na linha de comando, e isso tem precedência sobre a variável de ambiente.Se você deseja usar a variável de ambiente, remova a definição de alias da sua
~/.bashrc
, ou para uma execução de sessãounalias grep
. Você pode substituiralias grep='grep --color=auto'
porexport GREP_OPTIONS='--color=auto'
: eles têm essencialmente o mesmo significado, exceto que:GREP_OPTIONS
um valor diferente somente substitui o último;grep
partir de um shell interativo, enquanto a configuraçãoGREP_OPTIONS
também se aplica quandogrep
é executada a partir de scripts e outros aplicativos.Nunca coloque
--color=always
ou a maioria das outras opçõesGREP_OPTIONS
: isso interromperia muitos programas que analisam a saída degrep
.--color=auto
é a única opção segura a ser adotadaGREP_OPTIONS
. Para qualquer outra coisa, use o alias. Versões futuras do GNU grep deixarão o suporte para a opção por esse motivo.Observe que a definição de alias entra
~/.bashrc
(é uma configuração de shell), enquanto a definição de variável de ambiente entra~/.profile
(é uma configuração de sessão). Consulte Existe um arquivo equivalente ".bashrc" lido por todos os shells?Se você deseja executar o comando sem serrilhado apenas uma vez, execute em
\grep
vez degrep
(citar qualquer parte do nome ignora a pesquisa de alias).fonte
GREP_OPTIONS
está obsoleto em favor daalias
variante.