Se il tuo lavoro prevede l'esecuzione di strumenti e script sulla riga di comando di Linux, sono sicuro che ci sono molti comandi che eseguiresti ogni giorno. Chi non conosce la riga di comando dovrebbe sapere che esiste uno strumento chiamato storia - che ti dà un elenco di comandi che hai eseguito in precedenza.
In questo tutorial, discuteremo le basi del comando history usando alcuni esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi qui presenti sono stati testati su una macchina Ubuntu 16.04LTS.
Comando della cronologia di Linux
Se sai come utilizzare efficacemente la cronologia della riga di comando, puoi risparmiare molto tempo su base giornaliera. Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti una buona idea su come utilizzare il comando cronologia a tuo vantaggio.
D1. Come funziona il comando cronologia?
L'utilizzo di base è semplice:basta eseguire il comando 'cronologia'.
history
Quindi puoi vedere che i comandi eseguiti in precedenza sono mostrati nell'output. Nota che ho usato il comando 'more' per assicurarmi che la visualizzazione dell'output sia sospesa nella prima pagina (l'output completo di 'history' è solitamente molto lungo).
Q2. Come fare in modo che la cronologia visualizzi anche la data e l'ora?
Se vuoi che il comando history visualizzi la data e l'ora di esecuzione di ogni comando, puoi farlo esportando la variabile HISTTIMEFORMAT nel modo seguente:
export HISTTIMEFORMAT="%F %T: "
Questo è tutto. Ora, quando esegui il comando "cronologia", vedrai le informazioni su data e ora nell'output.
Nel caso in cui la data e l'ora siano le stesse per tutti i comandi, la seguente spiegazione dovrebbe chiarire le cose:
If you set the HISTTIMEFORMAT in bash your new entries get stored in the history file with a
timestamp, older commands that don't have a timestamp (those before you ever set HISTTIMEFORMAT
will display one and the same date-time-stamp (I assume the one from the first entry found with a
real timestamp).
This problem should solve itself after your complete history has been updated in a few days.
You can look in ~/.bash_history to see what is the first line that has a date-time-stamp.
Those are lines starting with a # followed by a (currently) 10 digit number.
T3. Come fare in modo che la cronologia interrompa la registrazione dei comandi?
Se si verifica una situazione in cui non si desidera che il sistema salvi la cronologia dei comandi, è possibile farlo utilizzando la variabile HISTSIZE. Basta esportarlo con zero come valore e sei a posto.
Vedi il seguente esempio:
Quindi puoi vedere che l'esecuzione del comando "cronologia" ora non ha prodotto alcun risultato.
Nota che c'è anche una variabile HISTFILESIZE. Ecco la differenza tra i due:
HISTSIZE is the number of lines or commands that are stored in memory in a history list while your
bash session is ongoing.
HISTFILESIZE is the number of lines or commands that (a) are allowed in the history file at startup
time of a session, and (b) are stored in the history file at the end of your bash session for use in
future sessions.
Q4. Come fare in modo che la cronologia non registri un singolo comando?
Questo può essere fatto impostando la variabile HISTCONTROL su 'ignorespace.' Puoi farlo nel modo seguente:
export HISTCONTROL=ignorespace
Ora ogni volta che esegui un comando che non vuoi venga registrato nella cronologia, eseguilo semplicemente con uno spazio iniziale.
Q5. Come eseguire una ricerca rapida nella cronologia?
Naturalmente, puoi utilizzare il comando grep per cercare parole chiave o comandi specifici nell'output prodotto dal comando cronologia. Tuttavia, esiste anche un metodo molto più veloce:reverse-i-search.
È abbastanza semplice:tutto ciò che devi fare è premere CTRL+R mentre sei sulla riga di comando e vedrai il tuo prompt trasformarsi in qualcosa del genere:
Ora digita la parola chiave che desideri cercare e vedrai i suggerimenti corrispondenti dalla cronologia sulla destra. Ad esempio, ho digitato "man" (senza virgolette) e il primo risultato che ho ottenuto è stato "man apropos".
Se questo non è quello che stai cercando, puoi ottenere il successivo risultato corrispondente premendo di nuovo CTRL+R. Quindi, nel mio caso, il risultato successivo che ho ottenuto è stato "Cerca uomo".
Puoi continuare a cercare in questo modo. Una volta ottenuto il risultato desiderato, premi semplicemente il tasto freccia destra e otterrai l'intero comando sul tuo prompt.
Quindi ora puoi eseguire questo comando o usarlo come preferisci.
Q6. Come eseguire il comando precedente?
Esistono due semplici modi per eseguire l'ultimo comando eseguito:premere CTRL+P o eseguire il comando seguente:
!!
Non credete (soprattutto la seconda via)? Provalo.
Nel caso in cui il requisito sia eseguire rapidamente il penultimo comando, puoi farlo nel modo seguente:
!-1
E così via.
Q7. Come fare in modo che la cronologia ignori le voci duplicate nell'output?
Questo può essere fatto impostando HISTCONTROL variabile su 'ignoreboth' e 'erasedups.' Puoi farlo nel modo seguente:
echo HISTCONTROL=ignoreboth:erasedups
Ora, quando eseguirai il comando cronologia, l'output non conterrà duplicati.
D8. Come cancellare la cronologia?
Se vuoi cancellare la cronologia esistente in modo da poter ricominciare da capo, usa l'opzione della riga di comando -c.
history -c
Conclusione
Probabilmente sarai d'accordo sul fatto che la cronologia è un comando molto importante di cui dovresti essere a conoscenza. In questo tutorial, abbiamo discusso diversi suggerimenti/trucchi importanti per ottenere il meglio da questo strumento. Dopo aver fatto pratica, vai alla pagina man dello strumento per ulteriori informazioni.