Leggi tutta la cronologia dei comandi del terminale in OS X


10

Sarebbe bello accedere a tutti i miei comandi eseguiti nel terminale su OS X in modo da poterlo esaminare e utilizzare come foglio di promemoria in esecuzione.

Sto usando il prompt Reverse-I-Search e ho aggiornato il mio .bash_profile per archiviare tutta la mia cronologia, come menzionato qui su Mactoids: Come cercare nella cronologia dei comandi di Terminal .

  1. Avvia Terminale.

  2. Passare alla cartella Home digitando:

    cd ~/
    
  3. Crea .bash_profile inserendo:

    touch .bash_profile
    
  4. Ora, modifica .bash_profile nel tuo editor di testo preferito o digita questo nella finestra Terminale per aprire automaticamente il file in TextEdit predefinito:

    open -e .bash_profile
    
  5. Infine, aggiungi questo al file .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000
    
  6. Salva ed esci.

Hai qualche idea su come potrei accedere per poter visualizzare la cronologia dei comandi del terminale in OS X?


4
Presumo che tu abbia letto man bash, quindi dovresti sapere che la cronologia è memorizzata nel file ~/.bash_history. Cos'altro devi sapere, puoi chiarire?

Sì, perché ho usato il comando 'man', quindi ho letto il manuale, ho trovato la risposta e ho deciso di porre la domanda sopra solo per divertirci. Grazie fideli per la risposta rapida, chiara e senza pretese.
Cameron McGrane l'

Risposte:


6

Tutta la tua cronologia è memorizzata ~/.bash_history, dove reverse-i-searchusano entrambi i tasti su / giù. Quel file viene regolarmente eliminato, ma se segui la guida nel tuo link, il .bash_historyfile non verrà praticamente mai eliminato.


Potatura FIFO o LIFO?
Pacerier

@Pacerier, non posso essere del tutto sicuro perché non uso più macOS ma se dovessi indovinare, potatura FIFO.
fideli

2

Personalmente, preferirei farlo in un modo più semplice e stampare tutto , invece di controllare l'ultima sessione che non copre tutte le finestre del Terminale e tutti i comandi.

Ottieni una cronologia completa

cd ~/.bash_sessions
cat *.historynew *.history

Se si desidera ordinare per data della sessione

cd ~/.bash_sessions
cat `ls -tr *.historynew *.history`

1

Nel caso in cui tu abbia ancora bisogno di una soluzione per questo, ecco come ho fatto il mio. Con questo, posso SALVARE E ACCEDERE alla cronologia in tutte le schede (ad esempio, se si immette un comando in una scheda, quindi si apre una nuova scheda e si preme verso l'alto, suggerirà il comando appena inserito nella scheda precedente)

Avrai bisogno di 2 cose: 1. Inserisci questo comando nel tuo terminale per assicurarti che histappend sia attivato:

shopt -s histappend && shopt histappend

2. Dovrai anche sapere dove sono memorizzati i tuoi comandi della cronologia.

I miei file di cronologia sono memorizzati in ~ / .bash_sessions, quindi è ciò che il mio codice rifletterà. Se i tuoi sono memorizzati in ~ / .bash_history, o in un'altra directory, scambialo con ~ / .bash_sessions quando lo sorgente nel nostro bash_profile.

Dopo averlo capito, apri il tuo bash_profile e aggiungi il seguente codice:

source ~/.bash_sessions/*.history        #<--sources prev sessions through your bash_profile. If you don't use ~/.bash_sessions to store your history, replace it with whatever you use (i.e. source ~/.bash_history/*.history

export HISTCONTROL=ignoredups:erasedups #<-- auto-erases duplicates in your history
export HISTSIZE=1000                    #<-- assigns # of results to return
export HISTFILESIZE=100000              #<-- assigns # of results to store in your .bash_history
shopt -s histappend                     #<-- appends & saves history throughout all tabs

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"  <--appends history from all tabs, clears & uses appended history file as current  

1
source ~/.bash_sessions/*.history
tieni
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.