Comment effacer l'historique du terminal?

93

J'utilise Linux Mint 17.1 Rebecca depuis environ 2 jours et j'ai accidentellement saisi mon mot de passe dans le terminal, qui apparaît maintenant dans l'historique des commandes que j'ai précédemment saisies.

Je veux effacer complètement l'historique du terminal. J'ai essayé d'utiliser les commandes suivantes dans le terminal qui, selon moi, effaceraient l'historique pour toujours, mais ce n'est pas le cas:

history -c
reset
tput reset

Les commandes ci-dessus "effaceront" l'historique du terminal, mais quand je sortirai et en créerai un autre, tout mon historique précédent est toujours présent et peut être répertorié à nouveau à l'aide de la commande - history et également en appuyant sur la flèche Haut de mon clavier. . Je ne veux pas que cela se produise avant d'avoir complètement effacé mon historique, puis je veux continuer à l'utiliser.

Comment puis-je effacer complètement l'historique de mon terminal - pour toujours et recommencer à zéro?

Remarque: je ne souhaite pas quitter le terminal sans enregistrer l’historique, il suffit de l’effacer définitivement dans cette instance.

Shambhala
la source
1
sed -i "s/$your_pass//g" ~/.bash_history...
jasonwryan
3
@jasonwryan Cela seul ne résoudrait pas le problème car la commande sed se retrouverait dans l'historique du shell.
Gilles
1
J'ai essayé d'utiliser le code de @jasonwryan mais j'ai: sed: -e expression n ° 1, caractère 0: aucune expression régulière antérieure dont je pense savoir pourquoi et qui m'a amené à formuler ceci à partir d'une recherche et de déconner: cat / dev / null> ~ / .bash_history && historique -c && sortie
Shambhala
1
@ Gilles: vous avez raison: il devrait y avoir un espace devant la commande ...
jasonwryan

Réponses:

145

resetou tput resetseulement fait les choses au terminal. L'histoire est entièrement gérée par le shell, qui reste inchangé.

history -cefface votre historique dans le shell actuel. C’est suffisant (mais excessif) si vous venez de taper votre mot de passe et que vous n’avez pas quitté ce shell ou enregistré son historique de manière explicite.

Lorsque vous quittez bash, l'historique est sauvegardé dans le fichier d'historique, qui est par défaut .bash_historydans votre répertoire personnel. Plus précisément, l'historique créé lors de la session en cours est ajouté au fichier; les entrées déjà présentes ne sont pas affectées. Pour écraser le fichier d'historique avec l'historique du shell actuel, exécutez history -w.

Au lieu de supprimer toutes vos entrées d'historique, vous pouvez ouvrir .bash_historyun éditeur et supprimer les lignes que vous ne souhaitez pas conserver. Vous pouvez également le faire dans bash, de manière moins pratique, en utilisant historypour afficher toutes les entrées, puis history -dpour supprimer les entrées que vous ne voulez pas, et enfin history -wpour sauvegarder.

Notez que même après avoir modifié le fichier d’historique, il est possible que votre mot de passe soit toujours présent quelque part sur le disque d’une version antérieure du fichier. Il ne peut plus être récupéré via le système de fichiers, mais il est peut-être toujours possible (mais probablement pas facile) de le trouver en accédant directement au disque. Si vous utilisez ce mot de passe ailleurs et que votre disque est volé (ou si quelqu'un y a accès), cela peut poser problème.

Gilles
la source
1
J'aime votre réponse et accepterai comme vous me l'avez dit un certain nombre de choses que je ne savais pas qui sont très utiles. Je vais aussi changer mon mot de passe!
Shambhala
Commencez historypar vérifier le contenu du journal de l'historique et les numéros de ligne que vous souhaitez supprimer, supposez que vous vouliez supprimer le numéro de ligne 1000 de l'historique, puishistory -d 1000
Claude COULOMBE
Si je modifie directement le fichier .bash_history, la commande history affiche toujours les commandes telles qu'elles étaient avant la modification, jusqu'à ce que je me déconnecte / me connecte.
Benitok
35

J'ai essayé l'histoire -c mais l'histoire revient une fois que nous sommes sortis et rouverts. Cela m'a aidé.

cat /dev/null > ~/.bash_history && history -c && exit

Cela efface l’historique enregistré dans le fichier d’historique ainsi que l’historique de la session en cours (afin qu’il ne soit pas sauvegardé dans un fichier lorsqu’il est bashfermé). Il sort ensuite de la coquille. La prochaine session du shell n'aura pas d'historique.

Athul
la source
18

Au lieu de supprimer toutes vos entrées d'historique, tapez ces commandes dans votre terminal:

  1. history -c (pour l'historique de suppression)
  2. history -w (sauvegarder l'historique)
utilisateur171143
la source
Cela ne suffira pas avec zsh si l' option inc_append_historyou share_historyest défini.
Saga
5

En raison d'un problème de sécurité, vous devez envisager de supprimer le fichier d'historique de manière sécurisée.

$ shred -u ~/.bash_history && touch ~/.bash_history
C0D3R3D
la source
3

En tant que néophyte confronté au même problème, j’ai eu recours à l’expédient plutôt brutal de supprimer et de recréer le fichier d’historique:

rm .bash_history
touch .bash_history

Cela a fonctionné pour moi sans provoquer d'effets secondaires désagréables dont je suis au courant.

Joe Poilu
la source
3

Type: history -c; rm ~/.bash_history

history -cefface l'historique de votre session en cours, rm ~/.bash_historyefface votre historique à long terme, donc history -c; rm ~/.bash_historyefface les deux.

ANTHONY
la source
Une explication peut aider le PO à mieux comprendre.
Mongrel