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