Je travaille sous Mac OSX, donc je suppose que j'utilise bash ...?
Parfois j'entre quelque chose dont je ne veux pas qu'on se souvienne dans l'histoire. Comment puis-je le supprimer?
Si vous souhaitez exécuter une commande sans l'enregistrer dans l'historique, ajoutez-la avec un espace supplémentaire
Prompt$ echo saved
Prompt$ echo not saved \
> # ^ extra space
Pour que cela fonctionne, vous avez besoin de ignorespace
ou ignoreboth
dans HISTCONTROL
. Par exemple, exécutez
HISTCONTROL=ignorespace
Pour rendre ce paramètre persistant, placez-le dans votre .bashrc
.
Si vous avez déjà exécuté la commande et souhaitez la supprimer de l'historique, utilisez d'abord
history
pour afficher la liste des commandes de votre historique. Recherchez le numéro à côté de celui que vous souhaitez supprimer (par exemple 1234) et exécutez
history -d 1234
De plus, si la ligne que vous souhaitez supprimer a déjà été écrite dans votre $ HISTFILE (ce qui se produit généralement lorsque vous mettez fin à une session par défaut), vous devrez réécrire dans $ HISTFILE, ou la ligne réapparaîtra lorsque vous ouvrirez une nouvelle session:
history -w
Pour effacer tout votre historique, utilisez
history -c
Pour supprimer une seule ligne, utilisez
history -d linenumber
J'ai ceci dans mon ~/.bashrc
, ce qui rend la commande $ forget
supprimer la commande précédente de l'historique
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);
}
Vous pouvez toujours modifier et supprimer des entrées de ~/.bash_history
, utile lorsque vous souhaitez supprimer une entrée ou plusieurs entrées
Si vous voulez oublier la session bash entière, vous pouvez kill
le processus bash actuel. Puisque la variable $$
maintenez le pid
du shell actuel, vous pouvez faire:
kill -9 $$
Étapes rapides:
echo $HISTFILE
history
dans votre terminalDans Ubuntu (mais je suis sûr que cela fonctionnera pour les autres distributions Linux et MacOS de la même manière), le fichier d'historique bash peut être simplement édité dans un éditeur de texte arbitraire:
$ nano ~/.bash_history
Si vous ne savez pas où il est stocké, vous pouvez le trouver comme suit:
$ echo $HISTFILE
Ou vous pouvez simplement le faire de manière un peu plus générique:
$ nano $HISTFILE
Vous devez écrire les modifications après avoir effacé l'historique. Et si vous ne souhaitez pas avoir la commande de nettoyage de l'historique dans votre historique, vous devez exécuter la commande comme ça:
history -c && history -w && logout
Bonne chance.
Pour supprimer une seule ligne du fichier d'historique, utilisez l'option -d. Par exemple, si vous souhaitez effacer une commande dans laquelle vous avez entré le mot de passe en texte clair comme dans le scénario ci-dessus, recherchez le numéro de ligne dans le fichier historique et exécutez cette commande.
$ history -d 2038
Pour supprimer ou effacer toutes les entrées de l'historique bash, utilisez la commande history ci-dessous avec l'option -c.
$ history -c
Vous pouvez également utiliser la commande ci-dessous pour supprimer définitivement l'historique de toutes les dernières commandes exécutées dans le fichier.
$ cat /dev/null > ~/.bash_history
Avec Bash 5, vous pouvez également supprimer une plage
history -d 511-520
1- dans le type de terminal bash
history
# Ceci listera toutes les commandes de l'historique .bash_history avec les numéros de ligne
ex:
...
987 cd
988 ssh [email protected]
990 exit
991 cd
2- Choisissez le numéro de ligne CMD que vous souhaitez supprimer
history -d 988
Remarque: si vous voulez supprimer par exemple les 3 derniers CMD, choisissez simplement le troisième numéro de ligne en bas ex: 988 et répétez le CMD history -d 988
3 fois de suite.