Optimisez votre productivité avec la commande history sous Linux : sauvegarde et restauration simplifiées

Commande history sous Linux : afficher et gérer l’historique des commandes

La commande history sous Linux est un outil incontournable pour les utilisateurs du terminal, permettant de consulter et réutiliser facilement les commandes précédemment exécutées. Que vous soyez développeur, administrateur système ou simple utilisateur, connaître les bonnes pratiques pour sauvegarder l’historique du terminal peut considérablement améliorer votre efficacité.

Cet article vous guide pas à pas pour tirer le meilleur parti de cette fonctionnalité, en vous montrant comment préserver vos données via des sauvegardes et comment restaurer vos commandes bash en cas de besoin. Découvrez des astuces simples pour garder le contrôle sur vos sessions et optimiser vos workflows en un clin d’œil.

Qu’est-ce que la commande history ?

La commande history est un outil intégré dans la plupart des shells Unix/Linux, notamment bash, permettant d’afficher l’historique des commandes tapées par l’utilisateur. Elle est utile pour gagner du temps, retrouver des commandes précédemment utilisées et améliorer la productivité.

Afficher l’historique des commandes

Utilisation de base de history

Pour afficher la liste des dernières commandes utilisées dans le terminal, il suffit d’entrer :
history
Chaque ligne affichée est précédée d’un numéro, ce qui permet de réexécuter une commande spécifique via !numero, par exemple :
!42

Options avancées de history

  • history n : affiche les n dernières commandes
  • history | grep mot_cle : permet de filtrer l’historique avec un mot-clé

Rechercher dans le fichier d’historique

Vous pouvez effectuer une recherche dans l’historique à l’aide de la commande grep à l’aide de l’une des méthodes suivantes.

La première méthode consiste à rechercher la commande « ntpdate » dans le fichier « .bash_history » comme suit :

# cat /root/.bash_history | grep ‘ntpdate’

Rechercher dans le fichier d’historique de Linux

La deuxième méthode de recherche dans l’historique consiste à utiliser la commande grep avec la commande history comme suit :

# history | grep 'ntpdate'

Rechercher dans le fichier d’historique de Linux

Effacer ou modifier l’historique

Effacer l’historique avec history -c

Pour vider l’historique de la session en cours :
history -c

Supprimer une commande spécifique

Pour supprimer une commande précise :
history -d numero
Par exemple :
history -d 42

Configurer la taille de l’historique

Deux variables d’environnement permettent de contrôler la taille de l’historique :
  • HISTSIZE : nombre de commandes à retenir dans la session actuelle
  • HISTFILESIZE : nombre total de commandes à enregistrer dans le fichier .bash_history
Par exemple, pour garder 1000 commandes :
export HISTSIZE=1000
export HISTFILESIZE=1000
Ces lignes peuvent être ajoutées dans le fichier ~/.bashrc.

D’autres variables d’environnement pour la commande history

Bash propose plusieurs variables d’environnement pour gérer le comportement de l’historique :
HISTFILE
  • Définit le fichier où l’historique est enregistré (par défaut ~/.bash_history).
  • Exemple : export HISTFILE=/chemin/vers/mon_fichier.
HISTSIZE
  • Nombre de commandes enregistrées en mémoire pour une session.
  • Exemple : export HISTSIZE=1000.
HISTFILESIZE
  • Nombre maximum de commandes stockées dans le fichier .bash_history.
  • Exemple : export HISTFILESIZE=2000.

HISTCONTROL

Définit la manière dont certaines commandes sont exclues de l’historique. Options courantes :
  • ignorespace : Ignore les commandes précédées d’un espace.
  • ignoredups : Ignore les doublons consécutifs.
  • ignoreboth : Combine ignorespace et ignoredups.

Vous pouvez afficher le contenu de ses variables sous Linux, en utilisant la commande echo.

echo $HISTSIZE

Bash propose plusieurs variables d’environnement pour gérer le comportement de l’historique

HISTTIMEFORMAT

Comme vous l’avez peut-être remarqué, par défaut, nous ne sommes pas en mesure de voir la date et l’heure auxquelles les commandes ont été exécutées, mais seulement leur ordre. Nous pouvons définir la variable $HISTTIMEFORMAT avec un format de date et d’heure spécifique, l’option la plus simple étant d’utiliser %c comme indiqué ci-dessous.

echo 'export HISTTIMEFORMAT="%c "' >> ~/.bashrc

Une fois que cet utilisateur se déconnecte et se reconnecte pour que l’exportation s’exécute, le fichier d’historique existant indiquera que tous les contenus ont été exécutés exactement au même moment, car l’information temporelle n’a pas été enregistrée auparavant. Toutefois, à partir de maintenant, la date et l’heure seront enregistrées avec chaque commande dans le fichier historique de bash.

Il existe d’autres variables pratiques pour optimiser l’utilisation de la commande history, comme éviter les entrées en double dans l’historique Linux.

Qu’est-ce que .bash_history ?

  • C’est un fichier texte situé par défaut dans le répertoire personnel d’un utilisateur (généralement à ~/.bash_history).
  • Il contient l’historique des commandes tapées par l’utilisateur dans le terminal Bash.
  • Ce fichier est utilisé pour permettre à l’utilisateur de rappeler facilement des commandes précédentes avec des raccourcis comme les flèches haut et bas ou des recherches dans l’historique.

Écriture dans .bash_history

  • Par défaut, les commandes tapées dans le terminal sont écrites dans .bash_history lorsque le terminal est fermé.
  • Si plusieurs sessions Bash sont ouvertes simultanément, seules les commandes de la dernière session fermée sont enregistrées.

Lecture de .bash_history

  • Lorsqu’une nouvelle session Bash est ouverte, le contenu de .bash_history est chargé en mémoire, permettant d’accéder aux commandes précédemment utilisées.

Sauvegarder l’historique du terminal

Maintenant, pour créer une sauvegarde à partir de votre fichier d’historique de terminal Linux, vous pouvez utiliser l’une des méthodes suivantes.

La première méthode consiste à utiliser la commande « cat » avec le symbole « > ». Cela devrait rediriger la sortie vers le fichier de sauvegarde.

# cat /root/.bash_history > history_backup

Sauvegarder le fichier history de Linux

Comme vous pouvez le voir dans la capture d’écran suivante, un fichier de sauvegarde est créé.

La deuxième méthode consiste à utiliser la commande history avec le symbole “>”.

Sauvegarder le fichier history de Linux

Pour effectuer une sauvegarde du fichier history appartenant à un autre utilisateur, vous pouvez utiliser la commande suivante.

# cat /home/admin/.bash_history > admin_history_backup

Sauvegarder des commandes spécifiques du fichier history

Pour sauvegarder des commandes spécifiques à partir du fichier history, vous pouvez utiliser l’une des méthodes suivantes.

La première méthode consiste à utiliser la commande “grep” avec le symbole “>” ou “>>”. La différence entre les symboles est :

  • > : Chaque fois que ce symbole est utilisé, il écrase à chaque fois le contenu du fichier.
  • >> : Ce symbole ajoute la sortie au fichier déjà créé, sans qu’il soit nécessaire de l’écraser.
# cat /root/.bash_history | grep 'ntpdate' >> history_backup

Sauvegarder des commandes spécifiques du fichier history.

Si vous devez sauvegarder des commandes spécifiques à partir d’un autre historique utilisateur, vous pouvez utiliser la commande suivante.

# cat /home/admin/.bash_history | grep 'ntpdate' >> admin_history_backup

Restaurer vos commandes bash

Pour restaurer le fichier de sauvegarde de l’historique, il vous suffit de supprimer le fichier historique d’origine « .bash_history » situé dans le répertoire de base, comme suit :

# rm /root /.bash_history

Utilisez maintenant la commande « mv » pour déplacer le fichier de sauvegarde de l’historique dans le répertoire de base.

# mv history_backup /root/.bash_history

Après avoir déplacé le fichier de sauvegarde de l’historique, vous devez recharger l’historique à l’aide de la commande suivante :

# history -r

Restaurer le fichier de sauvegarde history pour l’utilisateur actuel.

Vous pouvez maintenant prévisualiser votre historique à l’aide de l’une des commandes répertoriées précédemment.

Restaurer vos commandes bash pour d’autres utilisateurs

Si vous devez restaurer le fichier de sauvegarde de l’historique pour un autre utilisateur, vous devez basculer sur le compte de cet utilisateur à l’aide de la commande suivante, puis enchainer les commandes vues ci-dessus :

# su admin
# rm /home/admin/.bash_history
# mv /temp/admin_history_backup /home/admin/.bash_history
# history -r

Sécurité et confidentialité

Effacement de l’historique
  • Pour effacer l’historique en mémoire : history -c
  • Pour supprimer le fichier : rm ~/.bash_history
Ne pas enregistrer les commandes sensibles
Préfixez les commandes avec un espace si HISTCONTROL est défini sur ignorespace.
Désactiver l’historique
Définir HISTSIZE=0 et HISTFILESIZE=0 dans le fichier ~/.bashrc.

Exemple d’utilisation du fichier d’historique

Un fichier d’historique est créé pour chaque utilisateur et se trouve dans le répertoire de base de l’utilisateur, par exemple : « /home/username/.bash_history ».

Notez que le fichier d’historique .bash_history n’est pas protégé par des autorisations spéciales. Ainsi, tout utilisateur possédant un compte sur ce système Linux peut consulter l’historique des autres utilisateurs.

La première méthode consiste à utiliser la commande « cat » comme suit :

# cat /root/.bash_history

Afficher le contenu du fichier d'historique du terminal Linux

La deuxième méthode consiste à prévisualiser le contenu du fichier d’historique à l’aide de la commande history comme suit :

#history

Afficher le contenu du fichier d'historique du terminal Linux

Astuces et bonnes pratiques

  • Utilisez Ctrl + r pour rechercher de manière interactive dans l’historique
  • Évitez d’enregistrer des mots de passe en texte clair, préfixez la commande avec un espace si HISTCONTROL=ignorespace est activé.
  • Automatisez le nettoyage périodique de l’historique si vous manipulez des données sensibles

Pour aller plus loin

La commande history est un allié précieux pour tout utilisateur Linux. Bien configurée, elle permet de gagner du temps, améliorer sa productivité et mieux comprendre son flux de travail en ligne de commande.

Le fichier history n’existe pas que pour les commandes passées dans le terminal, il existe aussi pour MySQL et Redis entre autres et ils regroupent toutes les commandes passées sur votre serveur MySQL et Redis.

Il existe d'autres fichiers history comme pour MySQL et redis par exemple

En résumé, le fichier .bash_history est un outil puissant et pratique pour les utilisateurs de Bash comme l’utilitaire time, mais il nécessite une gestion attentive pour garantir la confidentialité et éviter les conflits entre sessions.

Signature manuelle Guillaume

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *