Por que '! 45' é substituído por 'top'?

5

Eu estava tentando uma pesquisa de string no Ubuntu 12.04, que foi assim:

find . -exec grep -l "!45" {} \;

Em vez de procurar pela string "! 45", ela foi substituída por top . Não invocou o comando, mas apenas começou a procurar pelo termo "top". Até que eu descobrisse -F para grep , eu achava que caracteres especiais seriam tratados como texto entre citações.

Anywho, agora que descobri isso, não tenho ideia do que é, do que é usado ou porque existe!

    
por Chad Harrison 16.07.2013 / 21:32

1 resposta

9

No bash shell, !45 retorna esse comando do histórico de comandos (ou !32 ou !873 ).

An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to the current position in the history list.

!

Start a history substitution, except when followed by a space, tab, the end of the line, ‘=’ or ‘(’ (when the extglob shell option is enabled using the shopt builtin).

!n

Refer to command line n.

Consulte aqui para detalhes completos no manual bash.

    
por 16.07.2013 / 21:38