linux memorizza gli utlimi 500 comandi ed é possibile tramite i tasti freccia su e giù é possibile scorrere tutti i comandi digitati ed esguiti nella shell.
CTRL + R + qualche carattere del comandi ricercato → verrà immediatamente mostrato l'ultimo comando che soddisfa i criteri di ricerca.
premendo di nuovo CTRL + R si scorreranno gli altri comandi con stesso criterio di ricerca.
trovato il comando basta premere INVIO o CTRL + J per fare modifiche.
i comandi vengono memorizzati nel file nella HOME .bash_history
per visualizzare tutti i comandi é possibile usare il comando
history
la lista dei comandi é numerata, basta scrivere ! é il numero del comando per eseguirlo.
!356 richiamo il comando numero 356
mettendo solo ! si esgue l'ultimo comando.
!
mettendo ! con un numero in - per richiamare gli ultimi comandi.
!-3 richiamo il terzultimo comando
mettendo ! con una serie di caratteri richiamo il comando con cui incomincia.
!ta richiamo l'ultimo comando che incomincia con ta
mettendo !?parola? richiamo il comando con quella parola anche in mezzo
aumento capacità del file .bash_history
export HISTFILESIZE=numero
esempio: aumento da 500 a 3333 righe
export HISTFILESIZE=3333
non salva nel file della history i comandi preceduti da uno spazio
export HISTCONTROL=ignorespace
non salva nel file della history i comandi doppi (già presenti)
export HISTCONTROL=ignoredups
non salva nel file della history i comandi doppi (già presenti) e quelli preceduti da uno spazio
export HISTCONTROL=ignoreboth
cancellare dalla cronologia ogni comando uguale all'ultimo comando immesso
export HISTCONTROL=ignoreboth:erasedups
specifichiamo con uan stringa espressione regolare i comandi
export HISTCONTROL="espressione regolare"
esempio:
export HISTIGNORE="&:su:[bf]g*:v[du]:pwd:ls*:grep*:less*:cat*:rm*:mv*:cp*"
spiegazione
ognuno é separato dai due punti :
* significa che ignorerà anche il seguito, ad esempio ls ignorerà solo ls, ls* ignorerà anche ls /media/
le parentesi quadre [ ] servono a evitare di ripetere comandi simili, quindi nell'esempio verrano considerati sia bg che fg, sia vd che vu
la & rappresenta la riga precedente nella cronologia, inserire una riga aggiunta nel file per ogni volta che si digita il comando precedente, se invochiamo man bash più volte questo verrà inserito ogni volta come se fosse un comando nuovo (a dispetto di ignoredups).
per rendere perenni le modifiche bisogna modificare i file di configurazione /etc/profile o /home/utente/.bash_profile