GNU/Linux >> Tutoriels Linux >  >> Linux

Commande d'historique sous Linux (historique de bash)

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 -chistory -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 fois ignorespace et ignoredups .
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.


Linux
  1. Comment utiliser la commande history sous Linux

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

  3. Comment effacer l'historique de Bash sous Linux

  4. La commande d'historique sous Linux expliquée en profondeur

  5. Comment effacer une commande spécifique de l'historique Bash sous Linux

Commande W sous Linux

À la commande sous Linux

Commande d'historique sous Linux avec des exemples

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

Commande Df sous Linux

Commande d'historique sous Linux - Afficher l'historique du terminal Linux