GNU/Linux >> Tutoriels Linux >  >> Linux

Réussissez à sauver la journée avec les commandes d'historique de Bash

Avez-vous en quelque sorte senti que vous avez exécuté des commandes que vous n'êtes pas censé faire ? Ont-ils gâché les choses et vous ont-ils laissé perplexe sur ce qui s'est passé ? Avec les commandes d'historique de Bash, vous vous épargnez les maux de tête de déterminer ce qui a gâché quoi et vous gagnez du temps en réexécutant des commandes complexes.

Pas un lecteur? Regardez ce didacticiel vidéo associé ! Vous ne voyez pas la vidéo ? Assurez-vous que votre bloqueur de publicités est désactivé.

Dans ce didacticiel, vous apprendrez certaines des commandes d'historique Bash les plus utiles et ne perdrez jamais la trace des exécutions de vos commandes.

Continuez à lire et laissez l'histoire de Bash sauver la situation !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants.

  • Une machine Linux – Ce didacticiel utilise Ubuntu 20.04, mais n'importe quelle distribution Linux fonctionnera.
  • Un compte utilisateur avec des privilèges root.

Affichage de l'historique de Bash

La plupart des distributions Linux utilisent Bash comme shell par défaut. Comme d'autres environnements shell, Bash conserve un enregistrement des commandes que vous avez exécutées précédemment. Cet enregistrement est conservé et maintenu dans un fichier appelé ~/.bash_history même si vous redémarrez votre système.

Mais comment voyez-vous l'historique de Bash ? En exécutant le history commande seule ou canalisée avec une autre commande.

1. Exécutez le history commande ci-dessous pour afficher l'historique des commandes.

history

Ci-dessous, vous pouvez voir la liste complète des commandes exécutées par l'utilisateur root dans la session shell en cours. Par défaut, les commandes sont affichées dans la liste de la plus ancienne à la plus récente (de haut en bas).

La sortie ci-dessous montre juste un petit fragment de l'ensemble du fichier d'historique. Dans de nombreux cas, vous obtiendrez des milliers de lignes d'historique et vous aurez du mal à les parcourir. Mais poursuivez votre lecture et vous apprendrez à personnaliser la sortie comme vous le souhaitez dans les étapes suivantes.

2. Ensuite, exécutez le history commande ci-dessous pour afficher le dernier 10 commandes enregistrées dans l'historique de Bash. Remplacer 10 avec le nombre de lignes que vous souhaitez afficher.

history 10

Comme vous pouvez le voir ci-dessous, la sortie est beaucoup plus gérable.

3. Enfin, exécutez la commande suivante canalisée avec le head commande pour ne lister que les dix premières commandes (les plus anciennes) exécutées par l'utilisateur root dans la session en cours.

Comme à l'étape 2, remplacez 10 par le nombre de lignes que vous souhaitez afficher.

history 10 | head

Comme indiqué ci-dessous, l'affichage des commandes les plus anciennes est utile lors de la vérification des commandes qui ont été exécutées au début d'une session.

Affichage de l'historique Bash des commandes par date et heure

Le history La commande est pratique mais ne vous montre pas la date et l'heure auxquelles vous avez exécuté les commandes. Les informations de date et d'heure peuvent être utiles pour le dépannage ou la recherche de la cause d'un problème.

Heureusement, vous pouvez obtenir ces informations en définissant le format de date et d'heure de l'historique de Bash dans le HISTTIMEFORMAT variables.

Exécutez la commande ci-dessous pour définir la date (%F ) et l'heure (%T ) format de l'historique de Bash, où :

  • Le %F l'option est pour la date complète, affichée au format année-mois-jour.
  • Le %T L'option est pour l'heure, affichée au format heure:minute:seconde (24 heures). Notez que vous devrez ajouter un espace après le %T possibilité de le séparer des commandes.
HISTTIMEFORMAT='%F, %T '

Vous pouvez utiliser n'importe quelle combinaison d'options de format. Par exemple, si vous souhaitez uniquement afficher l'heure à laquelle vous avez exécuté les commandes, utilisez %T . Ou utilisez le %F option Si vous souhaitez uniquement afficher la date à la place.

Maintenant, exécutez le history commande seule pour afficher l'historique de Bash.

history

Comme vous pouvez le voir ci-dessous, la sortie inclut désormais la date et l'heure d'exécution des commandes.

Recherche dans l'historique de Bash

Vous avez vu comment afficher l'historique de Bash et contrôler le nombre de commandes à afficher. Mais que se passe-t-il si vous aimez trouver une commande particulière dans votre historique Bash et que vous ne vous souvenez pas exactement de quoi il s'agissait ? Canaliser d'autres commandes, comme grep , au history commande fera l'affaire.

Exécutez la commande ci-dessous pour collecter (grep ) chaque ligne de commandes dans l'historique de Bash qui contient le ls texte, et imprimez les cinq derniers (5 ) commandes. Le -i l'option indique grep pour ignorer la casse des lettres de chaque ligne de commande.

Assurez-vous de remplacer ls avec le mot ou la phrase que vous souhaitez rechercher.

Par défaut, la commande grep gère la sensibilité à la casse, montrant la distinction entre les cas des lettres dans le fichier. Par exemple, si vous recherchez "ls", vous verrez des commandes avec "ls", mais pas "LS" ni "Ls".

history 5 | grep -i ls

Vous pouvez voir ci-dessous que les cinq dernières commandes avec « ls » sont affichées, quelle que soit la casse des lettres.

Exécuter des commandes à partir de l'historique de Bash avec des désignateurs d'événements

Vous savez déjà comment afficher les commandes de votre historique Bash dans différentes sorties. Mais saviez-vous que vous pouvez également exécuter des commandes depuis votre historique Bash sans tout retaper ?

Cette fonctionnalité permet de gagner du temps lorsque vous exécutez plusieurs fois les mêmes commandes à l'aide de désignateurs d'événements. Les désignateurs d'événements vous permettent de référencer une commande par sa position dans la liste d'historique et sont utiles lors de la réexécution de commandes complexes.

Pour exécuter une commande depuis votre historique Bash, vous taperez un point d'exclamation (! ) suivi du numéro de la commande à exécuter.

1. Affichez l'historique de Bash avec toutes les méthodes que vous avez apprises jusqu'à présent. Mais le tutoriel exécute le history commande sans options ni commandes redirigées.

history

Les nombres dans la colonne de gauche dans la sortie ci-dessous sont les numéros d'historique des commandes appelés désignateurs d'événements.

Notez le numéro de la commande que vous souhaitez relancer à partir de l'historique de Bash, dans ce cas, la commande apt install sudo.

2. Ensuite, exécutez la commande suivante pour exécuter le 11e (!11 ) commande de votre historique Bash

!11

Vous pouvez voir ci-dessous que vous exécutez la commande apt install sudo en exécutant la commande !11.

Peut-être que vous aimez exécuter la commande à sec avant de l'exécuter réellement. Si c'est le cas, ajoutez l'option :p à l'une de vos commandes cibles, comme indiqué ci-dessous. Cette option est utile si vous ne voulez pas gâcher les choses si vous relancez une commande.

!11:p

Remarquez ci-dessous que la commande !11:p imprime la commande cible à partir de l'historique de Bash sans l'exécuter.

3. Exécutez la commande suivante (!! ) si vous souhaitez peut-être exécuter la dernière commande de l'historique de Bash. Cette commande est utile lorsque vous quittez accidentellement une commande ou oubliez d'exécuter une avec sudo privilèges.

!!

Vous pouvez voir ci-dessous le !! La commande exécute la dernière commande de l'historique Bash, la commande history 5.

4. Maintenant, exécutez la commande ci-dessous pour réexécuter une commande précédée de sudo, peut-être le touch commande, à partir de l'historique de Bash. Si vous avez oublié d'ajouter le sudo dans une commande précédente, cette fonctionnalité est utile si vous utilisez un utilisateur non root.

sudo !!

5. Enfin, exécutez les commandes ci-dessous pour définir la commande ping comme dernière commande et réexécutez la dernière commande dans l'historique Bash en spécifiant le nom de la commande.

Cette fonctionnalité est utile si vous vous souvenez du début du nom de la commande, vous n'avez donc pas besoin d'afficher et de rechercher l'historique de Bash.

# Ping google.com
ping google.com
# Rerun the specified command (ping)
!ping

Vous pouvez voir ci-dessous que la commande !ping trouve la commande la plus récente qui commence par ping et réexécute cette commande.

Réutilisation des arguments de l'historique de Bash

Réexécuter les commandes de l'historique sans tout retaper est amusant, n'est-ce pas ? Mais que se passe-t-il si vous souhaitez exécuter une nouvelle commande tout en utilisant les arguments d'une autre commande ? Dans ce cas, en utilisant le !$ Le désignateur d'événement est pratique pour désigner le dernier argument de la commande précédente.

Comme les exemples précédents, !$ vous permet de réutiliser des arguments longs ou compliqués sans les retaper. Par exemple, vous créez un nouveau fichier avec un chemin et un nom de fichier longs, et vous souhaitez utiliser le même nom pour un autre fichier. Vous n'avez donc pas à le retaper. Vous pouvez le faire en tapant la commande suivante.

Exécutez les commandes ci-dessous pour créer un fichier avec un long chemin et un nom de fichier et ouvrez le fichier dans un éditeur de texte sans retaper tout le chemin du fichier.

# Creates a file called this_is_a_long_file_name
touch /home/ata/Documents/this_is_a_long_file_name
# Expand to the last command's arguments and 
# opens the this_is_a_long_file_name file in a text editor
nano !$

Comme vous pouvez le voir ci-dessous, en utilisant le !$ Le désignateur d'événement vous fait gagner beaucoup de temps en réexécutant des commandes avec des arguments longs ou compliqués.

Conclusion

Dans cet article, vous avez appris à utiliser les commandes d'historique de Bash pour gagner du temps et améliorer la productivité. À ce stade, vous savez déjà comment afficher un certain nombre de commandes, rechercher des commandes spécifiques, réexécuter des commandes et réutiliser les arguments de votre historique Bash.

Ces compétences vous seront utiles lorsque vous travaillerez sur la ligne de commande. Alors pourquoi ne pas apprendre les raccourcis Bash pour développer ces compétences et augmenter votre productivité dans un environnement de ligne de commande ?


Linux
  1. Utilisation de modificateurs de mots avec l'historique Bash sous Linux

  2. Est-il possible d'appliquer les commandes intégrées à Bash ?

  3. Avec Bash après avoir "fait défiler" jusqu'à une commande précédente… Comment passer ensuite à la suivante dans cette histoire ?

  4. Exclure certaines commandes du stockage dans l'historique de Bash ?

  5. Le tutoriel Ultimate Bash Array avec 15 exemples

Revivez l'histoire de Linux avec le bureau ROX

Qu'est-ce que Git Bash ? Travailler avec les commandes Git Bash

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

Sauvez la journée avec Stellar Phoenix Windows Data Recovery

15 commandes intégrées utiles de Bash Shell (avec exemples)

En utilisant l'historique bash pour obtenir une commande précédente, copiez-la, puis "exécutez-la", mais avec la commande commentée