Estou seguindo um tutorial e ele menciona para executar este comando:
sudo chmod 700 !$
Eu não estou familiarizado !$
. O que isso significa?
bash
command-history
Andrew
fonte
fonte
echo
algo se você não tiver certeza do que ele fará.echo $(rm -rf /)
--no-preserve-root
opção existente e, se vir as palavras "sem preservação" em um programa, é melhor pensar com cuidado sobre o que faz.Respostas:
Basicamente, é o último argumento para o comando anterior.
( fonte ; guia prático, a propósito)
Não vale nada a distinção entre esse
!$
token e a variável shell especial$_
. De fato, ambos se expandem para o último argumento do comando anterior. No entanto,!$
é expandido durante a expansão do histórico , enquanto$_
é expandido durante a expansão de parâmetros . Uma conseqüência importante disso é que, quando você usa!$
, o comando expandido é salvo no seu histórico.Por exemplo, considere as teclas digitadas
echo Foo
Enterecho !$ Jar
Enter Up Enter; eecho Foo
Enterecho $_ Jar
Enter Up Enter.(Os únicos caracteres alteradas são o
$!
e$_
no meio).No primeiro, quando você pressiona Up, a linha de comando lê
echo Foo Jar
; portanto, a última linha gravada em stdout éFoo Jar
.Neste último, quando você pressiona Up, a linha de comando lê
echo $_ bar
, mas agora$_
tem um valor diferente do que anteriormente - na verdade,$_
é agoraJar
, então a última linha gravada em stdout éJar Jar
.Outra conseqüência é que
_
pode ser usado em outras expansões de parâmetros, por exemplo, a sequência de comandosimpressões
isomorphism isosceles
. Mas não há${!$%morphism}
expansão " " análoga .Para obter mais informações sobre as fases de expansão no Bash, consulte a
EXPANSION
seçãoman 1 bash
(isso é chamado de expansões de shell na edição online). AHISTORY EXPANSION
seção é separada.fonte
!$
insert-last-argument
, normalmente vinculado aM-.
.Estritamente falando,
!$
é a última palavra do último comando da lista de histórico.Exemplos:
fonte
!$
lhe dará o último comando usado para esse usuário em particular ....você também pode encontrar o histórico dos comandos usados anteriormente usando o
history
comando ... experimentá-lo ....NOTA: Para um usuário específico, todos os comandos usados anteriormente serão armazenados no arquivo de histórico do bash.
fonte