Supprimer l'historique des commandes

Toutes les commandes lancées dans un terminal shell Bash Linux sont conservées dans un fichier, il est possible de les consulter et de les effacer. La conservation de l’historique des requêtes est parfois très utiles mais il est parfois nécessaire de supprimer certaines entrées.

Fichier historique

L’historique des commandes tapées par les utilisateurs est conservé dans le fichier ~/.bash_history ou parfois dans ~/.history

Chaque utilisateur possède son propre fichier d’historique des commandes, la commande history permet d’accéder à son propre historique mais pas à celui des autres utilisateurs.

1
2
3
4
5
6
7
8
9
10
# history
489 2019/04/16-14:30:25 → cd /home/n0tes.fr/www/
490 2019/04/16-14:30:26 → ls
491 2019/04/16-14:30:39 → git status
492 2019/04/16-14:30:52 → git fetch
493 2019/04/19-13:43:43 → vim .bashrc
494 2019/04/19-13:43:57 → vim /etc/bash.bashrc
495 2019/04/19-13:23:02 → ls
496 2019/04/19-13:23:11 → man iptables
497 2019/04/24-13:08:46 → uptime

Il est à noter que root peu bien entendu directement consulter l’historique de n’importe quel autre utilisateur en ouvrant directement le fichier /home/user/.bash_hitory

1
# cat ~/.bash_history

Effacement

Effacer l’historique

Pour vider complètement l’historique :

1
# history -c

Effacer une seule ligne

Pour effacer uniquement une seule ligne, ici la 42 :

1
#  history -d 42

Effacer plusieurs lignes

Commande history

En utilisant les options d’history

1
# history -d start end

Boucle for

Avec une boucle for, avec ValeurMin < ValeurMaxi l’intervalle de lignes à supprimer :

1
# for (( i=ValeurMini; i<=ValeurMaxi; i++ )); do history -d $i; done

Avec un script

Ce script bash permet de supprimer plusieurs lignes de l’historique en utilisant une boucle sur les numéros de ligne.

1
2
3
4
for (( i=42; i <= 50; i++ )) 
do
history -d $i
done

Avec un script interactif

Effacer plusieurs lignes à l’aide d’un script interactif

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash

echo -e "\n\033[0;4;31mChoississez un intervalle de suppression\033[0m"

echo -e "\nPremière ligne :"
read minValue

echo -e "\nDernière ligne :"
read maxValue

echo -e "\n"

# Script utile
for (( i=minValue; i<=maxValue; i++ ))
do
history -d $i
echo "Supression de la ligne" $i
done

Documentation

Xa, le man de bash

Partager