Documentação para o seguinte no shell Bash:! keyword

2

Se você fizer o seguinte no Bash - talvez em outros shells também -, você executará um comando do histórico que corresponda à palavra-chave fornecida:

$ !keyword

Estou procurando documentação para este comando. Eu tentei pesquisar na página man bash mas sem sorte. Eu também tentei o Google, mas é quase impossível (certo?) Procurar pontuação no Google.

Eu quero saber:

  1. Qual ordem este comando pesquisa seu histórico? Comando mais antigo para o mais recente? Ou de outra maneira?

  2. Estou ciente de adicionar a opção : p no final do comando para impedir a execução, mas há outras opções? Embora não tenha certeza de quais outras opções eu gostaria, mas apenas curioso.

Claro que eu poderia descobrir isso por tentativa e erro, mas eu prefiro olhar através da documentação antes de usar este comando puro.

Talvez eu esteja procurando no lugar errado? Qualquer ajuda no rastreamento da documentação seria muito apreciada.

    
por Belmin Fernandez 19.10.2010 / 00:08

2 respostas

2

Isso se chama expansão do histórico . A maioria dos comandos de expansão de histórico se refere à linha de comando correspondente mais recente (as exceções são referências a uma linha de comando por número).

Os formulários mais úteis são !prefix expandindo para o comando mais recente, começando com prefix , !?substring? expandindo para o comando mais recente contendo substring e ^from^to , que substitui from por to no comando anterior.

Você pode extrair apenas uma palavra específica em vez da linha inteira adicionando um designador de palavras , como em

ls foo bar *~ *.pdf
rm !*

Modificadores podem realizar substituições de strings e extrair partes de palavras. O modificador :p faz com que o comando resultante seja impresso, mas não executado.

    
por 19.10.2010 / 01:45
0

O pedido é mais recente para o mais antigo.

!n executa o comando com o número n em history .

!-n executa o enésimo último comando no history .

!! executa o último comando (por exemplo, !-1 ).

Você também pode, por exemplo sudo !! se você esqueceu de colocar um prefixo em sudo .

Você pode pesquisar no Google por bang ou bang bang para encontrar algo sobre esses comandos, como isso ou < href="http://mail.linux.ie/pipermail/ilug/2006-May/087799.html"> isso

Além disso:

Most modern shells support csh's bang commands - bash, tcsh and zsh all do. While some bang commands don't work in all those shells, all of the following do

Então, talvez seja melhor você procurar na documentação csh .

    
por 19.10.2010 / 00:20