Stampare e interrogare la cronologia dei comandi per trovare specifici comandi passati

Se stai cercando di ricordare un comando esatto eseguito tramite il Terminale ma non riesci a farlo, puoi interrogare la cronologia della riga di comando per scoprire i vecchi comandi che sono stati eseguiti o eseguiti in passato.

Questo trucco per trovare e recuperare i comandi precedenti eseguiti nella riga di comando funziona su Mac OS, Mac OS X, nonché su Linux e altri sistemi operativi Unix. Qualsiasi cosa con un comando di cronologia standard può utilizzare questo trucco per recuperare comandi precedenti, rendendolo uno strumento prezioso per gli amministratori di sistema e gli utenti della linea di comando.

Come trovare comandi specifici dalla cronologia dei comandi in Mac OS

Per rintracciare la cronologia dei comandi di un particolare comando, è necessario aprire l'app Terminale e quindi utilizzare la seguente sintassi:

history |grep "search string"

Questo cercherà "stringa di ricerca" nella cronologia dei comandi e stamperà solo le istanze che includono il testo di ricerca.

Se non hai familiarità con il terminale e ti stai chiedendo perché questo potrebbe essere utile, facciamo un esempio.

Esempio: ricerca di comandi precedenti "predefiniti"
Ecco un esempio pratico: stavo cercando di richiamare la sintassi esatta di un comando di scrittura di default che ho usato di recente. I comandi predefiniti sono spesso lunghe stringhe di testo che modificano il comportamento di Mac OS X o di alcune applicazioni, a causa della loro lunghezza e oscurità, cercando di ricordare uno di questi dalla cima della tua testa è una sfida a dir poco.

Invece di premere la freccia su per scorrere le esecuzioni passate per un'eternità, ho usato quanto segue per restringere la mia cronologia dei comandi a solo cose con "default write" in questo modo:

history | grep "defaults write"

Questo passa i risultati del comando 'history' completo attraverso grep per trovare solo le istanze che includono "default write" nella stringa di comando, vedrai una lista di risultati che assomiglia a qualcosa di simile a questo:

$ history |grep "defaults write"
44 defaults write com.apple.iTunes full-window -1
51 defaults write com.apple.iTunes invertStoreLinks -bool YES
421 defaults write com.apple.FaceTime AutoAcceptInvitesFrom -array-add [email protected]
426 defaults write com.twitter.twitter-mac ESCClosesComposeWindow -bool true
427 defaults write com.twitter.twitter-mac ESCClosesComposeWindow -bool false
428 defaults write com.apple.appstore ShowDebugMenu -bool true

Ora invece di cercare nell'intero elenco cronologico, hai ridotto i risultati.

Perfezionamento della cronologia dei comandi Ricerca di dati specifici

È possibile rendere la ricerca della cronologia come specifica o non specifica come si desidera. Ad esempio, se conoscessi il comando defaults che stavo cercando relativo a com.apple.iTunes, potrei usare il seguente comando per perfezionare ulteriormente la mia ricerca:

history |grep "defaults write com.apple.iTunes"

Quale restituirebbe qualcosa come:

44 defaults write com.apple.iTunes full-window -1
51 defaults write com.apple.iTunes invertStoreLinks -bool YES

Provalo tu stesso Puoi farlo con qualsiasi comando che hai inserito tramite il Terminale poiché tutti i comandi eseguiti di recente sono memorizzati nella cronologia. Il comando defaults è specifico per Mac OS X, ma history e grep sono strumenti generici per il mondo di Unix, quindi se sei mai su una macchina Linux o altrimenti puoi usare le stesse tecniche.

Se ti piace conoscere le basi di Mac OS X, consulta i nostri suggerimenti sulla riga di comando.