Il comando History digitato nel terminale e’ molto utile, in quanto riporta tutti i comandi precedentemente digitati.

L’uso più frequente che si fa di solito dell’history file e’ quando richiamiamo un comando precedente dentro la shell, cliccando sulla freccia in alto.

La lunghezza dell’elenco e’ variabile e puo’ essere allungata o diminuita.
Se utilizzato insieme a grep diventa molto utile per trovare comandi digitati in precedenza di cui non si ricordano che parti o porzioni…

Non esiste un vero e proprio manuale come negli altri comandi classici da terminale, perche’ history e’ un comando della shell e non di sistema.

Per sapere le opzioni non si digita infatti man history, bensì: help history (…continua)
I comandi eseguiti in shell vengono salvati nella home utente, nel file nascosto “.bash_history”.
Quando si richiama il messaggio precedente cliccando sulla freccia in alto sulla nostra tastiera viene richiamato l’ultimo comando salvato in quel file.

Alcuni esempi:

history 20 (elenco ultimi 20 comandi eseguiti)

history | grep porzionenomecomando (filtra i comandi eseguiti con un testo a scelta)

history -c (cancella tutta la history e l’elenco dei comandi)

!! (ripeti il comando precedente)

!n (ripeti il comando, dove “n” e’ il numero del comando nella lista history)

!string (ripeti il comando più recente, dove “string” sono le prime lettere del comando)

history > cmd.txt (salva tutto il contenuto di history nel file cmd.txt)

Un altro esempio per utilizzareil comando in congiunzione con grep per filtrarlo e con una stringa da cercare, formattato al meglio:

history | grep -i searchterm | less

Dove “searchterm” e’ ovviamente la porzione di comando che vi interessa ricercare.

Normalmente vengono salvati nel file nel file .bash_history gli ultimi 500 comandi eseguiti nella shell. Se si vuole incrementare questo valore fino a un massimo di 5000 digitando nel terminale:

histsize=number

Dove “number” e’ il numero massimo di comandi da memorizzare.

Il comando history si puo’ anche disabilitare per motivi di privacy o di sicurezza:

set +o history

e ovviamente riabilitare se disabilitato:

set -o history

Molto utile: se si vuole sapere anche quando i comandi sono stati eseguiti, e’ possibile ottenere oltre all’elenco dei comandi e al loro ID, anche la data e l’ora di esecuzione, aggiungendo il timestamp con questo comando:

export HISTTIMEFORMAT=’%d-%m-%Y %T ‘

Altra opzione molto utile: utilizzare control+R nella sessione terminale, per richiamare la modalita’ di ricerca interattiva nella history.
E’ possibile in pratica digitare una parte di un qualsiasi comando precedentemente eseguito e otterremo subito i risultati:

control+R si ottiene: (reverse-i-search)

Molto importante: se si usano uno o piu’ sessioni terminale aperte e’ bene sapere che tutte quante scriveranno i comandi nello stesso file, sovrascrivendo cosi’ eventuali modifiche precedenti.
Per far si che ogni sessione “aggiunga” al file esistente (append) i propri comandi e’ necessario impostare la variabile “histappend” (history append) in modo che ogni sessione terminale aggiunga e non sovrascriva il file .bash_history:

shopt -s histappend

E’ possibile anche cambiare nome al file nel quale vengono salvati i comandi in modo da non utilizzare il file .bash_history:

HISTFILE=percorso/nomefile