Como acessar o segundo argumento do último comando no histórico?

10

Estou começando a aprender um pouco do Regex, portanto, uso este comando repetidamente:

grep pattern /usr/share/dict/american-english 

Apenas a parte com padrão é alterada, por isso preciso escrever a expressão longa " / usr / share / dict / american-english " várias vezes.

Alguém fez a observação de que é possível expandir um argumento de um comando a partir do histórico de comandos digitando combinações de caracteres enigmáticas em vez da expressão completa. Você poderia me dizer essas combinações de caracteres enigmáticas?

    
por Abdul Al Hazred 04.04.2015 / 22:05

2 respostas

20

Você pode usar <M-.> (ou <Esc>. se sua chave Meta estiver sendo usada para outra coisa), ou seja, Meta-ponto (ou < esc > ponto), onde Meta é geralmente a tecla Alt, para Recorde o último argumento do comando anterior. Então, primeiro você digitaria

$ grep foo /usr/share/dict/american-english

E, em seguida, se você quiser usar o grep para outra coisa, digite

$ grep bar

Depois de digitar um espaço e depois Esc . (isto é, primeiro pressionando a tecla de escape, e depois a tecla de período):

$ grep bar /usr/share/dict/american-english

Você também pode usar uma das seguintes opções:

$ grep bar !:2
$ grep bar !$

Onde !:2 e !$ significam "segundo argumento" e "último argumento" respectivamente.

    
por 04.04.2015 / 22:12
2

Em geral (com Bash) <Esc> N <Esc> . chamará o argumento N'th do comando anterior para a linha de comando atual (onde N é baseado em 0).

Para o segundo argumento do último comando, seria:

<Esc> 1 <Esc> .

Se você quisesse o terceiro argumento, então

<Esc> 2 <Esc> .

... e assim por diante.

Como outros já mencionaram, se você quiser o argumento último do comando anterior, há um atalho específico para isso em:

<Esc> .

    
por 10.04.2015 / 20:33