Existe uma maneira no Bash de recuperar o argumento do comando anterior?
Eu costumo fazer vi file.c
seguido por gcc file.c
.
Existe uma maneira no Bash de recuperar o argumento do comando anterior?
Existe uma maneira no Bash de recuperar o argumento do comando anterior?
Eu costumo fazer vi file.c
seguido por gcc file.c
.
Existe uma maneira no Bash de recuperar o argumento do comando anterior?
Respostas:
Você pode usar $_
ou !$
para recuperar o último argumento do comando anterior.
Também Alt + .
pode ser usado para recuperar o último argumento de qualquer um dos comandos anteriores.
!!:1
, !!:2
etc. ( !!:0
é o próprio comando anterior.) Veja gnu.org/software/bash/manual/bashref.html#History-Interaction
!$
, você usa !^
para o primeiro argumento.
echo tiger rabbit
, como posso me referir tiger
no seguinte comando?
Alt + .
não funciona no modo vi. Apenas para sua informação, para outros que estavam confusos aqui.
Se o comando anterior tiver dois argumentos, como este
ls a.txt b.txt
e você queria o primeiro, você poderia digitar
!:1
dando
a.txt
Ou, se você quisesse os dois, poderia digitar
!:1-2
dando
a.txt b.txt
Você pode estender isso para qualquer número de argumentos, por exemplo:
!:10-12
-bash: :1-2: bad word specifier
ls a.txt
linha 2ll !:1-2
!:^-$
pode ser usado ou, claro, código semelhante em combinação com números.
!!:n
onde n
é a posição baseada em 0 do argumento que você deseja.
Por exemplo:
echo 'one' 'two'
# "one two"
echo !!:2
# "two"
O !
prefixo é usado para acessar comandos anteriores.
Outros comandos úteis:
!$
- último argumento do comando anterior!^
- primeiro argumento (após o programa / built-in / script) do comando anterior!!
- comando anterior (frequentemente pronunciado "bang bang")!n
- número n
de comando dehistory
!pattern
- correspondência de comando mais recente pattern
!!:s/find/replace
- último comando, substitua find
porreplace
!!:s/find/replace
, você também pode ^find^replace
.
!*
- todos os argumentos do comando anterior (após o programa / built-in / script). por exemplo: ls *.tmp *.cache rm !*
Na linha de comando, você pode pressionar esc- .ou alt+.
Ele percorre o último argumento dos seus comandos anteriores.
↑
e ↓
para trabalhar também.
Se você souber o número fornecido no histórico de um comando específico, poderá usar qualquer argumento nesse comando usando os seguintes termos.
Use following para pegar o segundo argumento do terceiro comando no histórico,
!3:2
Use following para pegar o terceiro argumento do quinto último comando do histórico,
!-5:3
Usando um sinal de menos, você pede que ele passe do último comando da história.
! * executa um novo comando com todos os argumentos anteriores.
ls /tmp
cd !*
#you are now in /tmp
$_
.
Sim, você pode usar !$
para recuperar o último argumento do comando anterior.