Lors de l’ouverture de fichiers sous Unix, que signifie la syntaxe “! $”?

Voici le code exemple:

user$ touch file.txt user$ mate !$ 

“mate” appelle l’éditeur de texte textmate, et cette seconde commande ouvre le fichier créé précédemment. quelle est cette syntaxe! $? qu’est-ce que c’est! faire? qu’est-ce que $ fait?

Ceci est une fonction de shell appelée dans l’extension de l’histoire de différents shells ou dans la substitution d’historique.

Les mots commençant par un point d’exclamation sont remplacés par des mots provenant de commandes précédemment exécutées. Quels mots et quelles commandes, cela dépend du rest du mot.

Dans cet exemple particulier, le signe dollar fait référence au dernier mot d’une commande, et puisqu’il n’y a pas d’autre caractère entre ‘!’ et ‘$’ la commande référencée est la précédente, donc! $ est remplacé par le dernier argument de la commande prevoius.

Les autres spécificateurs de commandes et de mots diffèrent quelque peu entre les shells.

!$ , dans le shell Bash, fait référence au dernier mot de la commande précédente, ici file.txt .

Le $ , empruntant à la syntaxe de la commande expression régulière et ed / vi , signifie “dernier”.

Vous le trouverez dans la documentation de votre shell.

Malheureusement, la documentation du shell ne montre généralement pas le ! et $ caractères ensemble, ce qui rend la recherche de !$ inutilement difficile. (Le ! Introduit une substitution d’historique; le $ modifie, le faisant uniquement référence au dernier mot.)

Pour tcsh, man tcsh ou visitez cette page et recherchez “substitution d’historique”.

Pour bash, man bash et recherchez “HISTORY EXPANSION”, ou info bash ou visitez le manuel bash , en particulier les sections sur l’expansion de l’historique et les indicateurs d’ événement .