porque o grep “!” mostra “bash:!: event not found”? [duplicado]

2

Se eu correr

grep "!" test.txt

mostrará o erro

bash: !: event not found

Bem, eu sei que devo usar grep '!' . Mas como entender o erro acima?

Eu sei que ! é um caractere especial de bash. De acordo com o link .

Double quotes: "..." prevents some substitutions but allows others. Every substitution that begins with a dollar sign $ is performed, as is the legacy ... (backtick) command substitution. Backslash escaping is also performed. No word splitting or filename expansion is performed.

Não menciona que as aspas duplas afetarão! Alguém poderia explicar como o bash ou o grep interpretam grep "!" ? Qual é o "evento"?

    
por user15964 20.03.2017 / 16:44

2 respostas

4

Não é grep que está causando isso. É seu bash que está interpretando o ! . Mude para uma versão mais recente de bash ou use single quotes '!' para calar bash .

    
por 20.03.2017 / 16:49
1

Você está vendo o recurso Expansão do histórico do Bash. Alguns acham útil lembrar de comandos anteriores, mas eu coloquei set +o histexpand no meu .bashrc e pressione Ctrl + R para procurar parte do comando.

    
por 03.11.2018 / 22:25