web-dev-qa-db-fra.com

Comment supprimer bash_history pour le jour actuel uniquement?

Je travaille sur un projet client hébergé sur Digital Ocean sur un serveur Ubuntu, sur lequel je travaille avec quelques autres développeurs. Comment puis-je supprimer l'historique des commandes jusqu'à un certain point?

Par exemple, j'aimerais supprimer toutes les commandes que j'ai saisies aujourd'hui et laisser toutes les commandes précédentes avant, est-ce possible?

Il est plus facile pour les autres développeurs de rechercher les commandes précédentes sans passer par toutes les miennes. Est-il possible d'effacer bash_history jusqu'à un certain point, par exemple uniquement l'histoire actuelle? Si c'est le cas, comment?

S'il vous plaît donnez votre avis!

Merci!

1
Anthony Pinto

Les lignes de l'historique Bash sont enregistrées en tant que lignes de texte simples, sans aucune méta-information, comme un horodatage d'invocation. Il n'est donc pas possible d'effacer automatiquement tout l'historique des commandes d'un seul jour, car vous ne pouvez tout simplement plus dire quelle commande a été exécutée à quel moment.


Si vous souhaitez simplement supprimer l'historique complet des commandes de votre session Bash actuelle (c'est-à-dire tout ce qui n'est encore qu'en mémoire et non encore écrit sur le disque), vous pouvez vider le tampon de l'historique en mémoire ou le remplacer par l'ancien. le contenu du fichier à partir du disque.

  • Si vous effacez la mémoire tampon de l'historique, vous obtiendrez un historique en mémoire vide pour votre session en cours, ce qui signifie qu'aucune commande ne s'affichera si vous appuyez sur , etc. Une fois que vous quittez votre session Bash, toutes les nouvelles commandes entrées après l’effacement sont ajoutées au fichier historique. Lors de votre prochaine session, vous verrez à nouveau l’historique complet, avec uniquement la plage entre le début de votre dernière session. et la commande en clair manquante.

    history -c
    
  • Le remplacement du tampon d’historique actuel en mémoire par le contenu du fichier d’historique du disque aura le même résultat final que l’effacement du tampon d’historique, à la différence que dans votre session en cours, vous aurez accès à l’ancien historique des commandes au lieu d’une liste vide.

    history -r
    

Si cela ne vous aide pas parce que vous voulez ranger les entrées des sessions précédentes ou seulement une session partielle, la méthode chirurgicale est celle dont vous avez besoin:

Synchronisez votre tampon d’historique en mémoire actuel avec le fichier d’historique du disque, puis ouvrez ce fichier dans un éditeur de texte et supprimez manuellement toutes les entrées incriminées.

Pour ajouter manuellement l'historique de votre session actuelle au fichier d'historique (car il ne se produit automatiquement que lorsque vous quittez votre session), lancez d'abord ceci:

history -a

Après cela, ouvrez le fichier d’historique Bash ~/.bash_history dans votre éditeur de texte préféré (car vous êtes sur un serveur, je suggérerais, par exemple, nano) et modifiez la liste de commandes selon vos préférences. Le fichier répertorie toutes les commandes enregistrées par ordre chronologique, les dernières en dernier. Supprimez simplement les lignes incriminées et enregistrez votre travail.

Après cela, vous devez recharger l’historique modifié dans votre tampon d’historique en mémoire à l’aide de la commande ci-dessous, afin d’éviter que les anciennes entrées de la mémoire soient ajoutées au fichier d’historique rangé lorsque vous quittez votre session:

history -r
2
Byte Commander

Vous pouvez supprimer des lignes de l'historique avec

 history -d NNN

où nnn est le numéro de ligne à 3 chiffres. consultez également man history Vous pouvez supprimer l'historique de la session Shell actuelle avec:

 history -c 
0
0x0C4