GNU/Linux >> Tutoriels Linux >  >> Linux

Comprendre le point d'exclamation (!) dans Bash ?

J'ai utilisé

history | less

pour obtenir les lignes des commandes précédentes et à partir des chiffres sur le côté gauche, j'ai trouvé la ligne que je voulais répéter (par exemple 22) et l'ai fait

!22

à l'invite de commande et cela a fonctionné - en exécutant l'ensemble de commandes sur la ligne que j'ai faite à ce moment-là. Je n'arrive pas à comprendre où le point d'exclamation est utilisé, ce qu'il représente en termes d'actions prises par bash et où l'utiliser. Dans la documentation, je ne vois pas d'explication "tangible".

Réponse acceptée :

! invoque l'expansion de l'historique, une fonctionnalité apparue à l'origine dans le shell C, à l'époque où vous pouviez compter sur les terminaux pour avoir des touches fléchées. C'est particulièrement utile si vous ajoutez le numéro de commande actuel à l'invite (PS1="!$ " ) afin que vous puissiez rapidement consulter votre écran pour obtenir les numéros des commandes passées.

Maintenant que vous pouvez utiliser les touches fléchées et des choses comme Ctrl-R pour rechercher l'historique des commandes, je ne vois pas beaucoup d'utilité pour la fonctionnalité.

Une variante de celui-ci que vous pourriez encore trouver utile est !! , qui réexécute la commande précédente. Tout seul, je ne trouve pas !  ! Entrez plus rapide que juste Entrez , mais cela peut être utile lorsqu'il est combiné dans une commande plus grande.

Exemple : Une erreur de pilote courante sur sudo systèmes basés est d'oublier le sudo préfixe sur une commande qui nécessite des privilèges supplémentaires. Un novice retape toute la commande. L'étudiant assidu édite la commande à partir de l'historique des commandes du shell. L'illuminé tape sudo !! .

Traitement de ! de cette manière est activé dans Bash par défaut dans les shells interactifs et peut être désactivé avec set +o histexpand ou set +H . Vous pouvez le désactiver dans Zsh avec set -K .


Linux
  1. Comment utiliser la commande history sous Linux

  2. Astuces Bash pour tous les jours en ligne de commande

  3. Comment effacer l'historique de la ligne de commande BASH sous Linux

  4. Comment effacer l'historique de Bash sous Linux

  5. Qu'est-ce que la commande d'exportation est censée faire sous Linux ?

Commande d'historique sous Linux (historique de bash)

La liste des raccourcis clavier Bash utiles

Comment activer l'horodatage dans l'historique de Bash sous Linux

Comprendre la commande uname sous Linux

Comprendre la commande time sous Linux

comprendre la sortie de la commande "yum history"