Introduzione
La history
command in Linux è uno strumento shell integrato che mostra un elenco di comandi utilizzati nella sessione del terminale. history
consente agli utenti di riutilizzare qualsiasi comando elencato senza ridigitarlo.
In questo tutorial, ti mostreremo come funziona la history
il comando funziona e diversi modi per usarlo.

Prerequisiti
- Un sistema che esegue Linux.
- Un account con privilegi sudo.
- Accesso alla finestra del terminale.
Come utilizzare il comando cronologia di Linux
Utilizzando la history
comando senza opzioni mostra l'elenco dei comandi utilizzati dall'inizio della sessione del terminale:
history

Per visualizzare l'elenco della cronologia dei comandi con un numero limitato di voci, aggiungi quel numero alla history
comando. Ad esempio, per mostrare solo le ultime cinque voci, usa:
history 5

Una volta chiuso il terminale, la shell Bash salva le nuove voci della cronologia dei comandi in .bash_history file.
Utilizza data e timestamp
Il .bashrc file memorizza le impostazioni della shell Bash. La modifica di questo file consente di modificare il formato di output della history
comando.
Apri il .bashrc file utilizzando un editor di testo come Nano:
sudo nano .bashrc
Per modificare il formato di output per includere data e timestamp, aggiungi la seguente riga a .bashrc file:
export HISTTIMEFORMAT="%c "

Utilizzo di argomenti diversi dopo HISTTIMEFORMAT
ti consente di personalizzare il livello di dettaglio nel timestamp:
%d
:Giorno%m
:Mese%y
:Anno%H
:Ora%M
:Minuti%S
:Secondi%F
:Data completa (formato A-M-G)%T
:Ora (formato H:M:S)%c
:data e ora complete (formato Day-D-M-Y H:M:S)
Salva le modifiche in .bashrc file, riavvia il terminale ed esegui la history
comando per confermare il nuovo formato di output:
history

Visualizza la dimensione del buffer della cronologia
Il .bashrc contiene due voci che controllano la dimensione del buffer della cronologia:
HISTSIZE
:il numero massimo di voci per l'elenco della cronologia.HISTFILESIZE
:il numero massimo di voci in .bash_history file.

Modifica del HISTSIZE
e HISTFILESIZE
values cambia il modo in cui la shell Bash visualizza e salva la cronologia dei comandi.
Ad esempio, modificando il HISTSIZE
valore a 10
crea la history
l'elenco dei comandi mostra un massimo di 10 voci più recenti.

Salvataggio delle modifiche in .bashrc file, riavviando il terminale ed eseguendo la history
il comando conferma il nuovo formato di output:
history

Ripeti un comando
Esecuzione della history
comando consente di riutilizzare qualsiasi comando nell'elenco. Ad esempio, per eseguire il primo comando (sudo apt update
) di nuovo, usa:
!1

Aggiunta di un trattino (- ) prima che il numero del comando inizi il conteggio dalla fine dell'elenco. Ad esempio, per riutilizzare il penultimo comando (history 5
), usa:
!-10

Usa i doppi punti esclamativi per ripetere l'ultimo comando:
!!

Cerca un comando per stringa
L'aggiunta di una stringa dopo il punto esclamativo esegue l'ultimo comando che inizia con quella stringa. Ad esempio, per riutilizzare l'ultimo comando che inizia con sudo
, usa:
!sudo

L'utilizzo di questo metodo può causare problemi se la shell esegue un comando imprevisto, soprattutto durante la ricerca di un comando che inizia con sudo
. Per precauzione, aggiungi il :p
argomento mostra il comando senza eseguirlo, consentendoti di rivedere il comando e decidere se eseguirlo.
!sudo:p

Per cercare un comando che contiene una stringa, ma che potrebbe non iniziare con essa, aggiungi un punto interrogativo accanto al punto esclamativo. Ad esempio, per riutilizzare l'ultimo comando che contiene echo
:
!?echo

Nell'esempio sopra, la shell riutilizza l'ultimo comando che contiene echo
string anche se il comando inizia con sudo
.
Elenca i comandi corrispondenti
Combinando history
e grep
consente di visualizzare un elenco di comandi che contengono una stringa. Ad esempio, per elencare tutti i comandi che contengono ufw
, usa:
history | grep ufw

Cambia il comando eseguito
Utilizzare la seguente sintassi per modificare l'ultimo comando eseguito:
^[old string]^[new string]^
Ad esempio, il ufw
il comando per abilitare la porta 20 mostra che la porta è già abilitata:
sudo ufw allow 20/tcp

Usa la sintassi sopra per cambiare il numero di porta da 20 a 22:
^20^22^

Impedisci la registrazione dei comandi nella cronologia
Per impedire la registrazione dei comandi nell'elenco della cronologia, disabilita temporaneamente la registrazione utilizzando:
set +o history
Per riattivare la registrazione, usa:
set -o history
Elimina cronologia
Usa il -d
opzione con la history
comando per eliminare un comando dall'elenco della cronologia. Ad esempio, elimina il comando numero 87 con:
history -d 87

Usa il -c
opzione per cancellare l'intero elenco della cronologia:
history -c
Aggiorna il file della cronologia
La shell Bash salva tutti gli aggiornamenti nell'elenco della cronologia dei comandi quando esci dalla sessione del terminale. La history
Il comando consente anche di salvare le modifiche durante la sessione del terminale.
Utilizzando il -a
l'opzione ti consente di aggiungere le voci della cronologia dei comandi da questa sessione a .bash_history file:
history -a
Un altro metodo consiste nell'usare il -w
opzione per salvare l'intero elenco della cronologia in .bash_history file:
history -w