GNU/Linux >> Tutoriels Linux >  >> Linux

Comment éviter les entrées en double dans l'historique de Bash sous Linux

Dans ce bref guide, nous apprendrons comment éviter les entrées en double dans l'historique de Bash sous Linux. Lorsque vous travaillez à partir de la ligne de commande, vous avez peut-être exécuté certaines commandes Linux plusieurs fois. Comme vous le savez déjà, chaque commande que nous exécutons dans le terminal est enregistrée dans le fichier historique. Ainsi, l'exécution répétée des mêmes commandes remplirait le fichier d'historique. Tôt ou tard, vous vous retrouverez avec trop d'entrées en double dans le fichier historique.

Par défaut, 500 entrées de commande sont stockées dans le fichier historique. Dans les systèmes Ubuntu récents, la taille du fichier est de 1000. Une fois que le nombre d'entrées de commande a franchi la limite par défaut, les entrées les plus anciennes seront éliminées de la liste d'historique. Par conséquent, vous ne pouvez pas récupérer les anciennes entrées. Vous pouvez, bien sûr, augmenter la taille du fichier d'historique et enregistrer autant d'entrées que vous le souhaitez. Cependant, au lieu d'augmenter la taille du fichier d'historique, il est préférable d'éviter d'enregistrer des doublons dans le fichier d'historique.

Rechercher l'emplacement du fichier d'historique

L'historique des commandes est une fonctionnalité spécifique au shell stockée pour chaque utilisateur. Selon le SHELL que vous utilisez, le fichier d'historique est enregistré dans un fichier spécifique. Dans les systèmes Linux qui utilisent Bash, les commandes sont enregistrées dans ~/.bash_history fichier par défaut. Vous pouvez vérifier l'emplacement du fichier d'historique de votre shell en exécutant la commande suivante :

$ echo $HISTFILE

Ici, HISTFILE est une variable utilisée pour définir le nom du fichier dans lequel l'historique des commandes est enregistré.

Exemple de sortie de mon Ubuntu bureau :

/home/sk/.bash_history

Dans CentOS 8 , j'ai obtenu le résultat suivant :

/root/.bash_history
Modifier l'emplacement du fichier d'historique

Si vous souhaitez modifier l'emplacement par défaut, exécutez :

$ echo "export HISTFILE=~/.custom_file" >>~/.bashrc

Remplacez "~/.custom_file" par le vôtre dans la commande ci-dessus.

Exécutez la commande suivante pour appliquer les modifications :

$ source ~/.bashrc

Voyons maintenant comment éviter d'enregistrer plusieurs fois les mêmes commandes dans ~/.bash_history fichier.

Évitez les entrées en double dans l'historique de Bash sous Linux

On récupère les dernières commandes exécutées à l'aide de la commande "history". Jetez un œil à l'exemple suivant :

$ history | grep ls

Exemple de résultat :

    8  lsb_release -a
   13  ls -l
   14  lsb_release -a
   17  ls -l
   20  ls -l
   23  lsb_release -a
   27  ls
   29  lsb_release -a
   32  ls
   36  ls
   42  ls
   44  lsb_release -a
   62  history | grep ls

Comme vous pouvez le voir dans la sortie ci-dessus, le "ls" commande a été enregistrée plusieurs fois. Nous pouvons contrôler ces doublons en utilisant HISTCONTROL variable. HISTCONTROL peut prendre les valeurs suivantes :

  • ignorer l'espace - les lignes commençant par un espace ne seront pas enregistrées dans l'historique.
  • ignoredups - les lignes correspondant à l'entrée précédente de l'historique ne seront pas enregistrées. En d'autres termes, les doublons sont ignorés.
  • ignorerles deux - C'est un raccourci pour les valeurs "ignorespace" et "ignoredups". Si vous définissez ces deux valeurs sur la variable HISTCONTROL, les lignes commençant par un espace et les doublons ne seront pas enregistrés.
  • effacements - éliminer les doublons sur l'ensemble de l'historique.

Donc, pour éviter les entrées en double dans l'historique de Bash sous Linux, modifiez votre ~/.bashrc fichier :

$ nano ~/.bashrc

Ajoutez la ligne suivante à la fin :

export HISTCONTROL=ignoredups

Enregistrez et fermez le fichier. Ici, nous avons préfixé la variable HISTCONTROL avec "export". Cela signifie que la variable est disponible pour tous les sous-processus. Plus de détails, ici .

Vous pouvez également utiliser le one-liner suivant :

$ echo "export HISTCONTROL=ignoredups" >>~/.bashrc

Exécutez maintenant la commande suivante pour appliquer les modifications :

$ source ~/.bashrc

Ou déconnectez-vous et reconnectez-vous pour appliquer les modifications.

A partir de maintenant, les entrées en double ne seront pas enregistrées. Vous pouvez le vérifier en exécutant la même commande plusieurs fois et afficher la liste de l'historique à l'aide de la commande suivante :

$ history

Vous pouvez également définir plusieurs valeurs pour la variable HISTCONTROL en les séparant par deux-points comme ci-dessous :

export HISTCONTROL=ignoredups:erasedups

Pour plus de détails, reportez-vous à la page de manuel de Bash :

$ man bash

Lire connexe :

  • Comment effacer l'historique de la ligne de commande sous Linux
  • Comment effacer une commande spécifique de l'historique Bash sous Linux
  • Comment afficher l'historique de Bash sans numéros de ligne

Linux
  1. Comment utiliser les commandes d'historique de Bash

  2. Comment effacer l'historique de Bash sous Linux

  3. Analyser l'historique de Bash sous Linux

  4. Comment renommer un fichier sous Linux ?

  5. Comment puis-je conserver mon historique bash d'une session à l'autre ?

Comment monter un fichier ISO sur Linux

Comment utiliser les opérateurs de test de fichiers Bash sous Linux

Comment sauvegarder et restaurer l'historique du terminal Linux

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

Comment créer un lien symbolique vers un fichier sous Linux

Comment effacer l'historique de Bash sous Linux et Mac