Come posso modificare la cronologia dei terminali di Mac OS X?


12

Come posso modificare la mia cronologia di bash in Mac OS X? Ho inserito una password in quella finestra per errore e non desidero rimuovere tutta la mia cronologia.

Risposte:


14

Modificare il .bash_historyè solo questione di aprire il file con un editor. Ci sono un paio di modi per raggiungere questo obiettivo.

  1. Nel Terminale basta digitare vi ~/.bash_history, quindi modificare il file come desiderato e salvare. Questa opzione potrebbe essere complicata, se non sei abituato a vi , ovviamente.
  2. Rendi il file visibile seguendo queste istruzioni, ad esempio aprilo come qualsiasi altro file, modificalo e salva.
  3. Nel Terminale basta digitare open ~/.bash_history -a /Applications/TextEdit.app. Questo comando aprirà il file con TextEdit , ovviamente puoi scegliere qualsiasi altro editor di testo. Modifica il file e salva.

Affinché le modifiche siano evidenti basta riavviare bash.


Ricevo "permesso negato". Quando eseguo un sudo, non riesco a vedere tutti i comandi inseriti.
Karthick S

1
@KarthickS Lo stai facendo esattamente?
Thecafremo,

Se guardo il contenuto di .bash_history, il contenuto è diverso dall'output di un comando di cronologia. Riconosco entrambi, i contenuti del file sono più vecchi. Cosa succede se sono aperte più finestre di comando? Sembra che non condividano la stessa cronologia dei comandi. PS Ho verificato che sto usando bash.
Victor Engel,

1
Penso di aver trovato la mia risposta. ECHO $ ​​HISTFILE mostra quello da modificare.
Victor Engel,

10

Nel terminale digitare historye annotare il numero di riga. Prossima chiamata history -d noted-line-number. È possibile verificare che la riga venga eliminata utilizzando historynuovamente.


2
Questo non funziona su Yosemite con ZSH.
Paulo Oliveira,

La domanda riguardava bash, non zsh. Leggi attentamente!
Unnamed_1

1
@DmitryDupelov hai ragione, mi dispiace disturbarla. Ad ogni modo, è un promemoria per i futuri lettori (che potrebbero anche mancare quel dettaglio). Grazie per aver corretto il mio commento.
Paulo Oliveira,

2
nano ~/.bash_history

quando hai finito, ctrl+x e torna ad accettare una risposta giusta amico


0

Penso che la risposta di Dmitry sia ideale se eseguita prima di salvare la cronologia: per impostazione predefinita, il salvataggio si verifica all'uscita della shell / terminale.

Se potresti aver già salvato la cronologia in ~ / .bash_history, preferisco la risposta di Thecafremo, ma suggerirei di aggiungere un passaggio per uscire da Terminal per assicurarsi che nessuna delle istanze bash abbia caricato la cronologia e la salverò di nuovo. Ciò è particolarmente complicato se si dispone di più terminali e si è abilitato qualsiasi tipo di aggiornamento della cronologia comando per comando.

Sfondo:

  • bash salva la cronologia all'interno di un'istanza della shell
  • bash può scrivere questa cronologia in un file, cosa che in genere accade quando si esce dalla shell / Terminale
  • bash può leggere da un file nella cronologia, cosa che in genere accade quando si apre una shell / Terminale
  • è possibile modificare il comportamento predefinito in modo che la cronologia si propaga prima, il che può migrare il tuo BAD_TEXT nel file e in altre finestre

Indipendentemente dal metodo utilizzato, aggiungerei un passaggio: verifica il successo!

  1. Esci da Terminal.app
  2. Riapri Terminal.app
  3. Conferma che il testo offensivo non è nella cronologia, preferibilmente in un modo che non crei cronologia aggiuntiva. Cioè, non farlo grep BAD_TEXT .bash_history! Questo nuovo comando sarebbe entrato nella storia. Vorrei solo aprire .bash_history nel tuo editor preferito e cercare BAD_TEXT all'interno di quello.

Questo dovrebbe darti la tranquillità di aver eliminato BAD_TEXT, indipendentemente dal tipo di configurazione pazza che potresti incontrare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.