Como posso usar o bash history para executar um comando usando argumentos do histórico?

3

Como posso usar o histórico bash para executar um comando com os argumentos de um comando no histórico?

Eu sei que posso usar !! para executar novamente o último comando, mas como posso executar um novo comando com esses argumentos?

por exemplo, eu corro primeiro:

~/somefolder/script.sh somefile

Eu quero correr rapidamente

~/somefolder/script.sh anotherfile

Eu tentei !! anotherfile , mas não funcionou.

Ou, melhor ainda, como posso executar !-2 newarguments para executar o segundo último comando do histórico com novos argumentos?

Eu não quero usar as setas para percorrer o histórico e retroceder nos argumentos.

    
por localhost 14.01.2014 / 06:41

2 respostas

5

Para escolher o nome do comando, use o modificador: 0:

$ man bash
$ !!:0 csh
man csh

Escolha todos os argumentos com o comando mais recente com! *

$ man sed awk perl
$ which !*
which sed awk perl
/usr/bin/sed
/usr/bin/awk
/usr/bin/perl

Escolha o segundo comando previamente executado em relação ao comando atual, e escolha todos os seus argumentos com:

$ echo !-2:*
echo sed awk perl
sed awk perl

Escolha o terceiro comando executado anteriormente em relação ao comando atual e escolha seu segundo argumento:

$ echo !-3:2
echo awk
awk

Escolha o último comando que começou com "which" e insira seu terceiro argumento:

$ echo !which:3
echo perl
perl

Tudo isso, as respostas para suas duas perguntas específicas:

  1. Veja o primeiro exemplo acima.
  2. ! - 2: 0 "nova lista de argumentos"
por 14.01.2014 / 07:22
-1

Se você pressionar o atalho de teclado Ctrl-R no terminal e digitar qualquer parte exclusiva do comando, ele fará a busca inversa e a localizará para você. Não há necessidade de percorrer todo o caminho.

    
por 14.01.2014 / 07:50

Tags