Como você se lembra do último (n-th?) argumento passado do comando anterior que você usou com o bash?

9

Freqüentemente, emito diferentes comandos no mesmo arquivo. Por exemplo:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

Existe uma maneira de reutilizar argumentos do comando anterior para que eu não precise reescrevê-lo?

    
por badp 21.10.2010 / 13:17

5 respostas

14

alt-. é certamente bom, mas se você já sabe qual argumento numerado deseja, você pode ser mais rápido: !:n é o argumento n th do comando anterior.

Geralmente é útil combinar isso com o espaço mágico. Para habilitar isso, coloque seu .inputrc Space: magic-space . Com isso ativado, quando você digitar espaço após !:2 , ele será imediatamente expandido para seu valor, em vez de esperar que você pressione enter. Evita que você pegue acidentalmente o argumento errado.

    
por 24.10.2010 / 07:22
9

No bash você pode usar o atalho Alt + . .
Acertar uma vez lhe dará o último argumento. Acertar mais irá percorrer seus últimos argumentos.

    
por 21.10.2010 / 13:32
4

No bash, o designador da "última palavra na linha de comando anterior" é !!$ :

$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world

Você também pode usar a "sintaxe do cursor" para substituir a parte inicial da linha de comando; isso é útil se você quiser executar vários comandos no mesmo arquivo:

file file.dat
^file^ls -l^ #gives 'ls -l file.dat'
^ls -l^stat # gives 'stat file.dat'

Existem muito mais possibilidades; veja "Substituição de histórico" na página de manual do bash (1) para detalhes.

    
por 21.10.2010 / 14:05
3

No bash, você também pode usar $ _ para o último argumento de linha de comando do último comando que você digitou:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

torna-se:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv $_ kittens.flv
$ vlc $_
$ rm $_
    
por 21.10.2010 / 13:46
0

Uma maneira relativamente lenta é recuperar o comando anterior com e substituir o comando anterior pelo mais recente.

    
por 21.10.2010 / 13:18

Tags