Un terminale Linux che esegue Bash ha una cronologia incorporata che puoi utilizzare per tenere traccia di ciò che hai fatto di recente. Per visualizzare una cronologia della tua sessione Bash, usa il comando integrato history
:
$ echo "foo"
foo
$ echo "bar"
bar
$ history
1 echo "foo"
2 echo "bar"
3 history
La history
command non è un file eseguibile sul tuo filesystem, come la maggior parte dei comandi, ma una funzione di Bash. Puoi verificarlo usando il type
comando:
$ type history
history is a shell builtin
Controllo cronologia
Il limite superiore delle righe nella cronologia della shell è definito da HISTSIZE
variabile. Puoi impostare questa variabile nel tuo .bashrc
file. Quanto segue imposta la cronologia su 3000 righe, dopodiché la riga più vecchia viene rimossa per fare spazio al comando più recente, posizionato in fondo all'elenco:
export HISTSIZE=3000
Ci sono anche altre variabili relative alla cronologia. Il HISTCONTROL
variabile controlla quale cronologia viene memorizzata. Puoi forzare Bash a escludere i comandi che iniziano con uno spazio vuoto inserendo questo nel tuo .bashrc
file:
export HISTCONTROL=$HISTCONTROL:ignorespace
Ora, se digiti un comando che inizia con uno spazio, quel comando non verrà registrato nella cronologia:
$ echo "hello"
$ mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
1 echo "hello"
2 echo "world"
3 history
Puoi anche evitare voci duplicate:
export HISTCONTROL=$HISTCONTROL:ignoredups
Ora, se digiti due comandi, uno dopo l'altro, nella cronologia ne compare solo uno:
$ ls
$ ls
$ ls
$ history
1 ls
2 history
Se ti piacciono entrambi questi ignora, puoi semplicemente usare ignoreboth
:
export HISTCONTROL=$HISTCONTROL:ignoreboth
Rimuovi un comando dalla cronologia
A volte commetti un errore e digiti qualcosa di sensibile nella tua shell, o forse vuoi semplicemente ripulire la tua cronologia in modo che rappresenti in modo più accurato i passaggi che hai fatto per far funzionare correttamente qualcosa. Se vuoi eliminare un comando dalla cronologia in Bash, usa -d
opzione con il numero di riga dell'elemento che desideri rimuovere:
$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
535 echo "foo"
536 echo "bar"
537 history | tail
$ history -d 536
$ history | tail
535 echo "foo"
536 history | tail
537 history -d 536
538 history | tail
Per interrompere l'aggiunta di history
voci, puoi inserire uno space
prima del comando, purché tu abbia ignorespace
nel tuo HISTCONTROL
variabile d'ambiente:
$ history | tail
535 echo "foo"
536 echo "bar"
$ history -d 536
$ history | tail
535 echo "foo"
Puoi cancellare l'intera cronologia delle sessioni con -c
opzione:
$ history -c
$ history
$
Lezioni di storia
Altro su Bash
- Cheat sheet di Bash
- Un'introduzione alla programmazione con Bash
- Una guida per l'amministratore di sistema allo scripting Bash
- Ultimi articoli di Bash
Manipolare la storia è solitamente meno pericoloso di quanto sembri, specialmente quando la stai curando con uno scopo in mente. Ad esempio, se stai documentando un problema complesso, spesso è meglio usare la cronologia della sessione per registrare i comandi perché, inserendoli nella cronologia, li stai eseguendo e quindi testando il processo. Molto spesso, documentare senza fare porta a trascurare piccoli passi oa scrivere piccoli dettagli in modo sbagliato.
Usa le sessioni di storia secondo necessità ed esercita saggiamente il tuo potere sulla storia. Buon hack della storia!