-
!!
est une commande historique de bash
il est remplacé par la dernière commande que vous avez exécutée. Vous pouvez essayer ls
suivi par echo !!
-
$(...)
exécute la substitution de commande, la sortie d'une commande remplace le nom de la commande (la partie comprise dans l'intervalle entre le nom de la commande et le nom de l'utilisateur). ()
). Encore une fois, echo $(!!)
permet d'illustrer ce point
Alors rm $(!!)
supprime tous les fichiers dont les noms sont imprimés après la réexécution de la dernière commande. Faites attention aux noms de fichiers contenant des espaces ou des caractères spéciaux tels que *
ou ?
ou ~
il ne fonctionnera pas pour ceux-là, ou bien il supprimera un ensemble de fichiers différent de celui auquel vous pensez.
Compte tenu des risques, il est probablement plus sûr de courir echo PATTERN
vérifiez le résultat et remontez d'une ligne dans l'historique, remplacez echo
par rm
et exécutez ceci. Au lieu de revenir en arrière, vous pouvez aussi simplement exécuter ^echo^rm^
(qui utilise l'expansion de l'historique pour remplacer la commande utilisée dans la ligne précédente).