web-dev-qa-db-fra.com

Comment puis-je supprimer les 5 dernières lignes de l'historique bash?

Comment puis-je supprimer les 5 dernières lignes de l'historique bash? Ainsi, lorsque je recharge le serveur Ubuntu ou que je le redémarre, ils ne sont pas du tout là?

history -c ne le supprime que de la session en cours, mais lorsque je me reconnecte, je revois les commandes, je veux effacer les 5 dernières.

J'ai couru:

history

Ensuite, je verrai les numéros des commandes, par exemple:

  489  cd ..
  490  cd .zshrc
  491  cat .zshrc

Puis je cours par exemple:

history -d 489
history -c 

Ensuite, je ferme le terminal, je le rouvre et je vois toujours que la ligne 489 n’a été supprimée que pour la session en cours. Comment puis-je le supprimer systématiquement de toutes les sessions?

S'il vous plaît donnez votre avis.

5
Anthony Pinto

Il y a différentes façons d'accomplir cette tâche, mais clarifions quelque chose avant d'aller plus loin.

Il existe un fichier nommé: ~/.bash_history, qui contient l'historique de vos sessions de terminal les plus anciennes. Chaque fois que vous fermez votre terminal, votre historique y est enregistré.

En même temps, l'historique de vos anciennes sessions et de la session en cours est temporairement accessible par les commandes history jusqu'à la fermeture du terminal, qui sera ensuite enregistré dans le fichier ~/.bash_history.

Donc, si vous supprimez 5 lignes à la fin de ~/.bash_history, la fermeture du terminal rendra votre commande en cours accessible lors des prochaines sessions.

Donc, si je fais un wc sur .bash_history:

wc -l ~/.bash_history

La plupart du temps, j'aurai un nombre inférieur à celui de history | wc -l.

Si vous souhaitez supprimer les 5 dernières lignes du fichier, vous pouvez utiliser cette commande:

for i in {1..5}; do sed -i '$d' .bash_history; done;

Et si vous souhaitez conserver tout l'historique sauf les 5 dernières commandes émises dans la session en cours, exécutez:

history | awk '{ print $2 }' | head -n -5 > .bash_history

N'oubliez pas non plus d'exécuter history -c.

4
Ravexina

Vous pouvez supprimer le fichier d’historique à l’aide de la ligne de commande en deux étapes:

Taper history -d <line_number> supprime une ligne spécifiée de l'historique en mémoire. Taper history -w écrit l'historique actuel en mémoire dans le fichier ~/.bash_history. Les deux étapes combinées suppriment la ligne de façon permanente de l'historique en mémoire et du fichier .bash_history.

Réf: StackExchange

4
EODCraft Staff

Je pense que vous devez essayer c'est très facile et simple.

  1. Comment supprimer l'historique sans aucune trace

    history -d $((HISTCMD-1)) && history -d NO_of_History_you_want_to_delete
    
  2. si vous voulez exécuter une commande sans laisser de trace.

    history -d $((HISTCMD-1)) && type_your_command_here_and_execute
    
3
Kartik Agarwal

Ouvrez ~/.bash_history dans votre éditeur et supprimez les 5 dernières lignes.

0
Nick Rodriguez