Je suis à travers un tutoriel et il est mentionné pour exécuter cette commande:
sudo chmod 700 !$
Je ne suis pas familier avec !$
. Qu'est-ce que ça veut dire?
bash
command-history
Andrew
la source
la source
echo
quelque chose si vous n'êtes pas sûr de ce que ça va faire.echo $(rm -rf /)
--no-preserve-root
option, et si vous voyez les mots "pas de réserve" dans un programme, réfléchissez bien à ce qu'il fait.Réponses:
Fondamentalement, c'est le dernier argument de la commande précédente.
( source ; guide pratique, en passant)
La distinction entre ce
!$
jeton et la variable shell spéciale ne vaut rien$_
. En effet, les deux développent le dernier argument de la commande précédente. Toutefois,!$
est étendu lors de l’extension de l’historique , tandis que$_
lors de l’ expansion des paramètres . Une conséquence importante de cela est que, lorsque vous utilisez!$
la commande développée, elle est enregistrée dans votre historique.Par exemple, considérons les frappes au clavier
echo Foo
Enterecho !$ Jar
Enter Up Enter; etecho Foo
Enterecho $_ Jar
Enter Up Enter.(Les seuls caractères modifiés sont le
$!
et$_
au milieu.)Dans le premier cas, lorsque vous appuyez sur Up, la ligne de commande
echo Foo Jar
est lueFoo Jar
. La dernière ligne écrite sur stdout est donc .Dans ce dernier cas, lorsque vous appuyez sur Up, la ligne de commande lit
echo $_ bar
, mais a maintenant$_
une valeur différente de celle utilisée précédemment. En fait,$_
c'est maintenantJar
, donc la dernière ligne écrite dans stdout estJar Jar
.Une autre conséquence est qu’il
_
peut être utilisé dans d’autres développements de paramètres, par exemple la séquence de commandesimpressions
isomorphism isosceles
. Mais il n'y a pas "${!$%morphism}
" d'expansion analogue .Pour plus d'informations sur les phases d'expansion dans Bash, voir la
EXPANSION
section deman 1 bash
(cela s'appelle Shell Expansions dans l'édition en ligne). LaHISTORY EXPANSION
section est séparée.la source
!$
insert-last-argument
, généralement lié àM-.
.À proprement parler,
!$
c'est le dernier mot de la dernière commande de la liste de l'historique.Exemples:
la source
!$
vous donnera la dernière commande utilisée pour cet utilisateur particulier ....vous pouvez également trouver l'historique des commandes utilisées précédemment en utilisant
history
commande ... essayez-le ....REMARQUE: Pour un utilisateur particulier, toutes les commandes utilisées précédemment seront stockées dans le fichier d’historique bash.
la source