Execute um comando com o argumento do último comando

30

Ao executar comandos, às vezes talvez você precise executar um comando com o argumento do último comando. Como você pode fazer isso?

Naturalmente, exceto pelo uso das teclas de seta e das teclas Del : ... Del Del < kbd> Del ... Del <new_command> .

    
por Radu Rădeanu 06.06.2013 / 16:07

4 respostas

41

Por exemplo, se você executar este comando:

mkdir long_path_here/new_dir

O mais provável é que você queira ir no diretório recém-criado. Você pode fazer isso usando os próximos "atalhos":

  • cd Esc . - digite cd e depois pressione Esc seguido por . (não no mesmo Tempo). Se o comando anterior não tiver argumentos, você receberá o comando anterior.
  • cd !* - neste caso, você obterá todos os argumentos do comando previuos. Se o comando anterior não tiver argumentos, você não receberá nada.
  • cd Alt + . - digite cd e depois pressione Alt e . (ao mesmo tempo ). De fato, usando este caminho e continuando a pressionar . (sem liberar Alt ), você obterá o último argumento para cada comando do histórico. Se um comando não tiver argumentos, você receberá o comando em si.

Em geral: <command> Esc . ou <command> !* ou <command> Alt + . .

    
por Radu Rădeanu 06.06.2013 / 16:07
26

Existem alguns atalhos se você quiser todos os argumentos do comando anterior ou apenas o último argumento.

  • Para todos os argumentos: <command> !*
  • Para apenas o último argumento: %código%

Exemplos:

ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/

ls foo/ bar/
ls !$ # Gives the results of ls bar/

Se você quiser um único argumento de uma lista de argumentos do comando anterior, você pode usar <command> !$

Exemplo:

ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/
    
por RandomMooCow 06.06.2013 / 21:34
5

Mencionado !* e !$ é uma coisa boa, mas quando você precisar fazer alguns pequenos atalhos de edição readline, venha ajudar!

Por exemplo, em vez do incontável ... ← < /kbd>DelDelDel...Del você pode simplesmente pressionar Ctrl-a (pule para o início da linha) Alt + d (deletar ao final da palavra)

Para mais informações man readline e pesquise Default key bindings .

    
por defhlt 06.06.2013 / 22:32
3

Para obter o argumento n th do seu comando anterior, digite Alt + n + Alt _ . Por exemplo, depois:

$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

digitando echo seguido por Alt 2 Alt _ lhe dará isto no próximo prompt:

$ echo 2

A "captura de tela" depois que você pressionar Alt 2 é:

(arg: 2) echo

Você pode repetir Alt _ várias vezes para obter o argumento n th dos comandos anteriores em sucessão.

Outra ideia útil é definir o alias r="fc -s" . Então, você pode fazer substituições de comandos:

$ echo 1
1
$ r echo=history
history 1
27755  history 1
    
por Alok 07.06.2013 / 01:09