Si vous passez beaucoup de temps sur la ligne de commande, l'affichage de l'historique des commandes que vous avez exécutées précédemment peut être une fonctionnalité utile qui peut faciliter votre travail quotidien et améliorer votre productivité.
Dans cet article, nous parlerons de l'history
commande, qui vous permet d'afficher une liste des commandes précédemment exécutées, de rechercher dans la liste et de manipuler le fichier d'historique.
Utilisation de l'history
Extensions de commande et d'historique #
history
est un shell intégré, et son comportement peut légèrement différer d'un shell à l'autre. Nous couvrirons la version intégrée de Bash de history
.
Dans sa forme la plus simple, lorsqu'il est invoqué sans aucune option ou argument, l'history
La commande affiche toute la liste de l'historique avec les numéros de ligne.
history
...
467 git push
468 tail -f var/logs/error
469 nano +22,5 functions.sh
470 source project-env/bin/activate
471 history
Taper !n
exécute la n-ième commande de la liste d'historique, et !-n
la commande n lignes en arrière. Dans l'exemple suivant, nous exécutons la commande à la ligne 467
:
!467
Une autre façon d'exécuter une commande est d'utiliser !word
expansion. word
fait référence à la commande la plus récente commençant par "mot".
Typiquement, history
affiche de nombreuses lignes de sortie qui ne tiennent pas sur l'écran. Pour afficher la sortie une page à la fois, dirigez-la vers un programme de téléavertisseur comme more
ou less
commande :
history | less
Pour afficher le dernier n
lignes, transmettez le nombre comme argument à la commande. Par exemple, pour afficher uniquement les cinq dernières lignes de la liste d'historique, vous devez saisir :
history -5
Utilisez le up
et down
touches fléchées pour parcourir les entrées de la liste. Lorsque la commande que vous avez recherchée s'affiche, appuyez sur Enter
pour l'exécuter.
Tapez !!
pour exécuter la commande précédente :
!!
Ceci est particulièrement utile lorsque vous oubliez d'ajouter une commande avec sudo
, et au lieu de retaper la commande, vous pouvez taper :
sudo !!
!-1
est identique à !!
et exécute la dernière commande de la liste d'historique, !-2
avant-dernier, et ainsi de suite.
^word1^word2^
l'expansion vous permet de relancer la dernière commande en remplaçant "mot1" par "mot2". Si vous avez accidentellement tapé la sduo command
au lieu de sudo command
vous pouvez répéter la commande en utilisant le mot correct avec :
^sduo^sudo^
Utilisez le grep
commande pour filtrer la sortie. Par exemple, pour afficher toutes les commandes, y compris "nano", vous exécuteriez :
history | grep nano
302 sudo nano /etc/resolv.conf
356 nano setup.py
413 sudo nano /etc/hosts
469 nano +22,5 functions.sh
Maintenant, si vous voulez relancer le nano setup.py
commande tapez simplement :
!356
Une autre façon de rechercher dans l'historique des commandes consiste à appuyer sur Ctrl-R
. L'invite changera comme suit et vous pourrez commencer à rechercher une commande précédemment exécutée.
(reverse-i-search)`':
Le shell affichera une ligne correspondante. Pour passer à la suggestion correspondante suivante, appuyez sur Ctrl-R
à nouveau.
Consultez le manuel de Bash pour plus d'informations sur l'expansion de l'historique, les modificateurs et les désignateurs.
Enregistrement de la liste d'historique #
Par défaut, lors du démarrage d'une nouvelle session, Bash lit la liste d'historique à partir du .bash_history
dossier . La liste des commandes exécutées dans la session en cours est conservée en mémoire et enregistrée dans le fichier à la fermeture de la session.
Si vous avez ouvert plusieurs sessions shell, seul l'historique de la dernière session fermée est enregistré.
Le -a
L'option vous permet d'enregistrer la liste de l'historique de la session actuelle dans le .bash_history
fichier :
history -a
Le -w
L'option écrit la liste complète de l'historique dans le fichier historique.
history -w
Effacer l'historique #
L'history
La commande vous permet d'effacer la liste complète de l'historique ou de supprimer certaines parties.
Pour effacer la liste de l'historique, utilisez le -c
choix :
history -c
Pour supprimer une ligne ou des lignes spécifiques entre des positions de début et de fin de la liste d'historique, utilisez le -d
option.
Par exemple, pour supprimer les lignes entre 365 et 375 (y compris ces lignes), vous devez taper :
history -d 365 375
Si vous fournissez un seul numéro au -d
option, la commande supprime la ligne donnée.
Lorsqu'un entier négatif est utilisé, les lignes sont comptées à partir de la fin de la liste d'historique.
Les commandes ci-dessus effacent la liste d'historique, qui est conservée en mémoire, mais ne supprime pas les entrées de .bash_history
fichier sur le disque. Pour effacer le fichier, vous devez écrire la liste de l'historique dans le fichier :
history -c
history -w
Comportement de modification de l'historique #
Le comportement de l'historique de Bash peut être défini à l'aide de plusieurs variables d'environnement différentes. Lors de la modification du comportement de l'historique, définissez les variables dans ~/.bashrc
ou tout autre fichier de configuration qui est chargé lorsque l'utilisateur se connecte.
Par défaut, Bash conserve 500 lignes dans la liste de l'historique des commandes. Le HISTSIZE
variable vous permet de modifier cette valeur. Pour le définir sur 10000, ajoutez la ligne suivante à votre .bashrc
fichier :
HISTSIZE=10000
Le HISTCONTROL
accepte une liste de valeurs séparées par deux-points qui définissent comment les commandes sont enregistrées dans la liste d'historique :
ignorespace
- les commandes commençant par un espace ne sont pas enregistrées dans la liste d'historique.ignoredups
- les commandes en double ne sont pas enregistrées.ignoreboth
- est un raccourci, comprenant à la foisignorespace
etignoredups
.
HISTCONTROL=ignoreboth
Lorsque le HISTTIMEFORMAT
variable est définie, Bash ajoute un horodatage d'exécution pour la commande sur chaque ligne.
Par exemple, si vous définissez :
HISTTIMEFORMAT="%F %T: "
L'historique sera affiché au format suivant :
413 2019-10-27 21:13:07: sudo nano /etc/hosts
Conclusion #
L'history
La commande affiche une liste des commandes précédemment exécutées. Par exemple, vous pouvez utiliser l'historique pour afficher une longue commande que vous avez déjà utilisée et dont vous ne vous souvenez plus.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.