L'historique du shell
Un article de Wiki de la communauté Mandriva.
Si vous voulez contribuer, cliquez simplement sur l'onglet modifier. Consultez également les autres pages dont la forme est à réviser.
La ligne de commande (ou shell) conserve un historique des dernières commandes tapées. C'est ce que vous pouvez voir en pressant les touches <Haut> et <Bas> dans Bash.
Il y existe beaucoup d'astuces pour utiliser au mieux cet historique ! Je vais mentionner ici les quelques-unes que je connais, mais n'hésitez pas à en rajouter.
- L'astuce du ! : commencer une ligne avec ! suivi de quelques lettres rappellera la commande la plus récente qui commence par ces lettres : très utile !
- L'astuce du !? : est similaire mais ne rappelle pas uniquement les commandes commençant par ces lettres mais aussi celles qui les contiennent !
Attention : taper des commandes de ce type suivies de <ENTREE> exécutera les commandes en question sans que vous les ayez relues… mieux vaut que vous soyez sûr de votre affaire… pour vérifier, avant <ENTREE> tapez donc : [Ctl+Alt+e], ce qui fera apparaître explicitement le texte de la commande.
- Bien sûr, la commande history affiche une liste numérotée des dernières commandes ;)
- ! suivi d'un nombre rappelle la commande dont ce nombre est le numéro dans la liste affichée par history.
- [Ctrl-r] vous permet de lancer une recherche en direction des commandes précédentes. Si la première commande trouvée ne vous convient pas vous pourrez répéter la même recherche en direction de commandes plus anciennes en retapant simplement [Ctrl-r] ; [Ctrl-s] vous permet de relancer la recherche vers les commandes les plus récentes ; notez que cette possibilité d'itération d'une même recherche n'est pas possible avec !+lettre(s) ou !?+lettre(s), qui se bornent à trouver la commande la plus récente.
- Le caractère # permet de mettre en commentaire une commande sans l'exécuter, mais l'enregistre néanmoins (utile si vous devez vérifier quelque chose alors que vous étiez en train de taper une longue commande).
- L'astuce du !$ : ces caractères ramènent le dernier argument de la commande précédente. Si vous venez de taper cp fichier1 fichier2, taper juste après, par exemple : rm !$ est équivalent (mais moins coûteux !!) à taper rm fichier2
- L'astuce du !* : ces caractères ramènent l'ensemble des arguments de la commande précédente. Si vous venez de taper cp fichier1 fichier2, taper juste après, par exemple : rm !* est équivalent (mais moins coûteux !!) à taper rm fichier1 fichier2
- Si vous voulez limiter la fonctionnalité d'enregistrement des commandes précédentes, vous pouvez utiliser la variable HISTIGNORE.
Par exemple :
export HISTIGNORE="&:ls:[bf]g:exit"
-> le & interdit d'enregistrer les commandes dupliquées ; en outre les commandes : ls sans arguments, bg, fg, et exit ne seront pas enregistrées. Vous pouvez taper une ligne de code de ce type dans votre .bashrc d'utilisateur.
-> Si, en plus, vous incluez l'expression [ t]* dans la chaîne HISTIGNORE, vous pourrez supprimer l'enregistrement de l'historique à volonté pour n'importe quelle commande, il vous suffira de taper un espace juste avant la commande elle-même !
- Pour supprimer entièrement la fonctionnalité de rappel des commandes précédentes, ce qui peut être envisagé pour des raisons de sécurité, ou pour cantonner l'historique à la mémoire vive pour la durée d'une session sans inscription sur le disque dur, voir ici.