Comment modifier l'historique du terminal Mac OS X?

12

Comment modifier mon historique bash sous Mac OS X? J'ai entré un mot de passe dans cette fenêtre par erreur et je ne veux pas supprimer tout mon historique.

Karthick S
la source

Réponses:

14

L'édition du .bash_historyest juste une question d'ouverture du fichier avec un éditeur. Vous pouvez y parvenir de deux manières.

  1. Dans le terminalvi ~/.bash_history , tapez simplement , puis modifiez le fichier comme vous le souhaitez et enregistrez. Cette option pourrait être délicate, si vous n'êtes pas habitué à vi , bien sûr.
  2. Rendez le fichier visible en suivant ces instructions, par exemple, ouvrez-le comme tout autre fichier, modifiez-le et enregistrez.
  3. Dans le terminal, tapez simplement open ~/.bash_history -a /Applications/TextEdit.app. Cette commande ouvrira le fichier avec TextEdit , vous pouvez bien sûr choisir n'importe quel autre éditeur de texte. Modifiez le fichier et enregistrez.

Pour que les modifications soient visibles, redémarrez simplement le bash.

Thecafremo
la source
Je reçois une "autorisation refusée". Lorsque je fais un sudo, je ne peux pas voir toutes les commandes entrées.
Karthick S
1
@KarthickS C'est ce que vous faites exactement quoi?
Thecafremo
Si je regarde le contenu de .bash_history, le contenu est différent de la sortie d'une commande d'historique. Je reconnais les deux, le contenu du fichier est plus ancien. Que se passe-t-il si plusieurs fenêtres de commandes sont ouvertes? Ils ne semblent pas partager la même histoire de commande. PS J'ai vérifié que j'utilise bash.
Victor Engel
1
Je pense avoir trouvé ma réponse. ECHO $ ​​HISTFILE affiche celui à modifier.
Victor Engel
10

Dans le type de terminal historyet notez le numéro de ligne. Prochain appel history -d noted-line-number. Vous pouvez vérifier que la ligne est supprimée en utilisant à historynouveau.

Sans nom_1
la source
2
Cela ne fonctionne pas sur Yosemite avec ZSH.
Paulo Oliveira
La question concernait bash, pas zsh. Lire attentivement!
Unnamed_1
1
@DmitryDupelov vous avez raison, désolé de déranger. Quoi qu'il en soit, c'est un rappel aux futurs lecteurs (qui peuvent également manquer ce détail). Merci d'avoir corrigé mon commentaire.
Paulo Oliveira
2
nano ~/.bash_history

quand vous avez terminé, ctrl+x et revenez pour accepter une bonne réponse mec

Matian2040
la source
0

Je pense que la réponse de Dmitry est idéale si elle est effectuée avant d' enregistrer l'historique - par défaut, l'enregistrement se produit à la sortie du shell / terminal.

Si vous avez peut-être déjà enregistré l'historique dans ~ / .bash_history, je préfère la réponse de Thecafremo, mais je suggérerais d'ajouter une étape de sortie de Terminal pour vous assurer qu'aucune des instances bash n'a chargé l'historique et ne la ré-enregistrera. Cela est particulièrement délicat si vous avez plusieurs terminaux et avez activé toute sorte de mise à jour de l'historique commande par commande.

Contexte:

  • bash enregistre l'historique dans une instance du shell
  • bash peut écrire cet historique dans un fichier, ce qui se produit généralement lorsque vous quittez le shell / Terminal
  • bash peut lire un fichier dans l'historique, ce qui se produit généralement lorsque vous ouvrez un shell / terminal
  • il est possible de changer le comportement par défaut afin que l'historique se propage plus tôt, ce qui peut migrer votre BAD_TEXT vers le fichier et vers d'autres fenêtres

Quelle que soit la méthode que vous utilisez, j'ajouterais une étape: vérifier le succès!

  1. Quittez Terminal.app
  2. Rouvrez Terminal.app
  3. Confirmez que le texte incriminé n'est pas dans l'historique - de préférence d'une manière qui ne créera pas d'historique supplémentaire. Autrement dit, ne le faites pas grep BAD_TEXT .bash_history! Cette nouvelle commande entrerait dans l'histoire. Je voudrais simplement ouvrir .bash_history dans votre éditeur préféré et rechercher dans celui-ci pour BAD_TEXT.

Cela devrait vous donner la tranquillité d'esprit que vous avez éliminé BAD_TEXT quel que soit le type de configuration de bash fou que vous pourriez rencontrer.

sauge
la source