web-dev-qa-db-fra.com

Comment supprimer une seule ligne de l'historique?

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?

228
B Seven

Mesures préventives

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.

Nettoyage post mortem

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
390
jw013
  1. Pour effacer tout votre historique, utilisez

    history -c
    
  2. Pour supprimer une seule ligne, utilisez

    history -d linenumber
    
54
soumyaranjan

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);              
}
9
Ryan Haining

Vous pouvez toujours modifier et supprimer des entrées de ~/.bash_history, utile lorsque vous souhaitez supprimer une entrée ou plusieurs entrées

5
Weslor

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 $$
5
Bruno Bronosky

Étapes rapides:

  1. Découvrez où se trouve le fichier historique de votre terminal avec echo $HISTFILE
  2. Ouvrez le fichier avec votre éditeur de texte
  3. Supprimez les lignes sensibles que vous y trouvez
  4. Sauvegardez le fichier
  5. Fermez et rouvrez votre terminal
  6. FAIT : votre historique est propre! Vous pouvez valider cela en exécutant la commande history dans votre terminal
0
marcelosalloum

Dans 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
0
automatix

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.

0
user882786

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

0
champion-runner

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.

0
KhogaEslam