Use os mesmos argumentos com um comando diferente [duplicate]

18

Aqui está algo que eu estou fazendo frequentemente:

less super/long/file/name

Seguido por:

vim super/long/file/name

Existe uma maneira fácil de passar os argumentos do comando anterior para o próximo? Então, eu gostaria de fazer algo como

vim !!!

E abra automaticamente super/long/file/name em vim .

    
por Vlad the Impala 09.08.2013 / 00:27

5 respostas

20

Usar !$ deve funcionar para acessar o último argumento do comando anterior no bash shell:

less super/long/file/name
vim !$

Também Meta + . ou Esc + . pode ser usado para colar o último argumento se o readline biblioteca está habilitada no modo emacs (opção padrão).

    
por 09.08.2013 / 00:33
27

Se você quiser apenas o último argumento do comando anterior, use !$ . Se você quiser todos os argumentos do último comando, use !* .

Exemplo

COMANDO # 1:

$ echo 1 2 3 4
1 2 3 4

execute # 1 e depois isto:

$ echo !$
echo 4
4

execute # 1 e depois isto:

$ echo !*
echo 1 2 3 4
1 2 3 4

Também recomendo que você confira este Unix & Linux Q & A & SuperUser @Gilles 'Q & A:

Sintaxe do cólon

Você pode pensar na saída history como uma grade. Cada comando é uma linha, cada argumento de cada comando é uma coluna. Assim: ( ! line : column).

Então, você pode consultar os comandos anteriores como este:

$ history | grep "105[8-9]"
 1058  echo 1 2 3 4
 1059  echo 5 6 7 8

$ echo !1058:2
echo 2
2
$ echo !1059:3
echo 7
7
    
por 09.08.2013 / 00:47
7

Miguel de Val-Borro deu a resposta geral correta para a sua pergunta, mas como você disse que costuma fazer essa sequência específica de less e vim , vale a pena mencionar que você pode pressionar v dentro de menos para abrir seu editor configurado. No manual menos, em v :

Invokes an editor to edit the current file being viewed. The
editor is taken from the environment variable VISUAL if defined,
or EDITOR if VISUAL is not defined, or defaults to "vi" if  nei‐
ther VISUAL nor EDITOR is defined.
    
por 09.08.2013 / 00:44
4

Use ESC + .

Ele irá pegar o último argumento do comando anterior

Você também pode pesquisar e substituir

less /foo/bar.txt
^less^vim
    
por 09.08.2013 / 00:52
0

Outra possibilidade:

r=super/long/file/name
less $r
vi $r
ls -l $r
chmod 600 $r
cat $r >> some/other/even/longer/file/name
...

Para salvar a digitação, você deve inserir super/long/file/name , etc., usando a conclusão da tabulação. Não há, é claro, nada de especial sobre a variável r ; Eu escolhi isso simplesmente pela proximidade da chave do cifrão.

    
por 09.08.2013 / 02:29