Dato che trascorro sempre più tempo nelle sessioni del terminale, mi sembra di trovare continuamente nuovi comandi che rendono più efficienti le mie attività quotidiane. La history
di GNU command è quello che ha davvero cambiato la mia giornata lavorativa.
La history
di GNU command mantiene un elenco di tutti gli altri comandi che sono stati eseguiti da quella sessione del terminale, quindi consente di riprodurre o riutilizzare quei comandi invece di riscriverli. Se sei un utente di terminale esperto, conosci la potenza della history
, ma per noi dilettanti o nuovi amministratori di sistema, history
è un aumento di produttività immediato.
Prima di tutto, la history
comando non è in realtà un comando. Puoi verificarlo di persona cercando il comando sul tuo sistema:
$ which history
which: no history in (/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin)
Il tuo computer non riesce a trovare la history
comando perché è una parola chiave incorporata nella tua shell. Poiché è scritto nella shell che stai utilizzando, possono esserci alcune variazioni nel modo in cui si comporta la cronologia a seconda che tu stia usando Bash, tcsh, Zsh, dash, fish, ksh e così via. Questo articolo si basa sull'implementazione della cronologia in Bash, quindi alcune funzioni potrebbero non funzionare in altre shell. Tuttavia, la maggior parte delle funzioni di base sono le stesse.
Cronologia 101
Per vedere la history
in azione, apri un programma terminale sulla tua installazione Linux e digita:
$ history
Ecco la risposta che ho ricevuto:
1 clear
2 ls -al
3 sudo dnf update -y
4 history
La history
command mostra un elenco dei comandi immessi da quando hai avviato la sessione. La gioia della history
è che ora puoi riprodurne uno qualsiasi usando un comando come:
$ !3
Il !3
comando al prompt dice alla shell di eseguire nuovamente il comando sulla riga 3 dell'elenco della cronologia. Potrei anche accedere a quel comando inserendo:
$ !sudo dnf
Questo richiede history
per cercare l'ultimo comando che corrisponde al pattern che hai fornito (in questo caso, quel pattern è dnf ) ed eseguilo.
Cronologia ricerche
Puoi anche usare history
per eseguire nuovamente l'ultimo comando inserito digitando !!
. Associandolo a grep
, puoi cercare i comandi che corrispondono a uno schema di testo oppure, utilizzandolo con tail
, puoi trovare gli ultimi comandi che hai eseguito. Ad esempio:
$ history | grep dnf
3 sudo dnf update -y
5 history | grep dnf
$ history | tail -n 3
4 history
5 history | grep dnf
6 history | tail -n 3
Un altro modo per accedere a questa funzionalità di ricerca è digitare Ctrl-R
per invocare una ricerca ricorsiva nella cronologia dei comandi. Dopo averlo digitato, il prompt cambia in:
(reverse-i-search)`':
Ora puoi iniziare a digitare un comando e i comandi corrispondenti verranno visualizzati per l'esecuzione premendo Invio o Invio .
Modifica di un comando eseguito
Puoi anche usare history
per eseguire nuovamente un comando con una sintassi diversa. Puoi rivedere la cronologia con history
. Ad esempio, se voglio modificare il mio comando precedente history | grep dnf
alla cronologia di history | grep ssh
, posso eseguire quanto segue al prompt:
$ ^dnf^ssh^
Il comando viene eseguito nuovamente, ma con dnf
sostituito da ssh
. In altre parole, viene eseguito questo comando:
$ history | grep ssh
Rimozione cronologia
Potrebbe venire il momento in cui desideri rimuovere alcuni o tutti i comandi nel file della cronologia. Se desideri eliminare un comando particolare, inserisci history -d <line number>
. Per cancellare l'intero contenuto del file della cronologia, esegui history -c
.
Il file della cronologia è archiviato in un file che puoi anche modificare. Gli utenti della shell Bash lo trovano nella loro home directory come .bash_history
.
Passaggi successivi
Ci sono molte altre cose che puoi fare con history
:
- Imposta la dimensione del buffer della cronologia su un certo numero di comandi
- Registra la data e l'ora per ogni riga nella cronologia
- Impedisci la registrazione di determinati comandi nella cronologia
Per ulteriori informazioni sulla history
comando e altre cose interessanti che puoi fare con esso, dai un'occhiata agli articoli di Seth Kenlon sull'analisi della cronologia, i modificatori di ricerca della cronologia e il manuale GNU Bash.
Questo articolo è stato originariamente pubblicato a giugno 2018 ed è stato aggiornato con ulteriori informazioni dall'editore.