Je travaille sous Mac OSX, alors je suppose que j'utilise bash ...?
Parfois, j'entre quelque chose dont on ne veut pas se souvenir dans l'histoire. Comment puis-je l'enlever?
bash
shell
command-line
command-history
B Seven
la source
la source
Réponses:
Mesures préventives
Si vous souhaitez exécuter une commande sans l'enregistrer dans l'historique, ajoutez-y un espace supplémentaire.
Pour que cela fonctionne, vous avez besoin de l'un
ignorespace
ouignoreboth
de l'autreHISTCONTROL
. Par exemple, exécutezPour rendre ce paramètre persistant, mettez-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
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 lancez
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 terminez une session par défaut), vous devrez écrire à $ HISTFILE, sinon la ligne réapparaîtra lorsque vous ouvrirez une nouvelle session. session:
la source
history -a
, dans ce cas, il est déjà écrit dans le fichier d'historique, plutôt que sur la sortie sous une configuration normale. Plus précisément: mywiki.wooledge.org/BashFAQ/088history -w
. Sinon, quand vous quittez, la ligne supprimée est toujours là!history -w
afterhistory -d {num}
était exactement ce dont j'avais besoin - cette information critique devait être ajoutée à la réponse, sinon un utilisateur pourrait penser qu'une suppression temporaire du shell actuel est en réalité permanente.history -w
est nécessaire pour les entrées déjà écrites dans le.bash_history
fichier. Comment reproduire (par exemple sur CentOS 7 avec configuration du stock): 1. login 2. entrez la commandeecho foo
3. déconnectez-vous 4. reconnectez-vous 5. supprimez l'entrée pourecho foo
6. déconnectez-vous 7. reconnectez-vous: l'entrée est toujours là. En fonction de la manière dont vous configurez votre historique bash, vous pouvez peut-être reproduire ce problème autrement, par exemple si vous provoquez l'écriture de l'historique avant la déconnexion.Pour effacer toute votre histoire, utilisez
Pour supprimer une seule ligne, utilisez
la source
J'ai ceci dans mon
~/.bashrc
, ce qui fait que la commande$ forget
supprime la commande précédente de l'historiquela source
history -d $( history | tail -n 1 | cut -f 1 -d " " )
plus simple?history | tail -n1
est lahistory
commande elle-même, la suppression de ce numéro donne une mauvaise entrée. Cependant,history -d $( history | awk 'END{print $1-1}' )
combine la sélection de ligne, la sélection de champ et la soustraction.Vous pouvez toujours éditer et supprimer des entrées de
~/.bash_history
, utile lorsque vous souhaitez supprimer une entrée ou plusieurs entrées.la source
Si vous voulez oublier toute la session bash, vous pouvez
kill
utiliser le processus bash en cours. Puisque la variable$$
contient lepid
shell actuel, vous pouvez faire:la source
Vous devez écrire les modifications après avoir effacé l'historique. Et si vous ne souhaitez pas que la commande history wipe soit dans votre historique, vous devez exécuter la commande comme suit:
history -c && history -w && logout
Bonne chance.
la source
la source