La Bash (di nuovo Bourne shell) è una shell popolare utilizzata sulla maggior parte dei sistemi simili a UNIX. Bash è scritto da Brian Fox come GNU Project. Incorpora funzionalità di Bourne shell, C shell e Korn shell. Gli utenti che trascorrono il loro tempo sulla riga di comando usando la shell bash spesso vorranno ripetere i comandi eseguiti in passato. La funzione di cronologia della shell di Bash aiuta a ricordare i comandi recenti e a riutilizzarli in seguito; risparmiando così tempo per ridigitare. Iniziamo!
Cronologia annunci
Quando storia comando utilizzato senza argomenti passati, visualizzerà i comandi recenti utilizzati con i numeri di riga corrispondenti.
$ history
L'output sarà simile al seguente:
Elenco degli ultimi 'n' comandi eseguiti
Utilizzando la "storia
$ history 7
Esegui un comando specifico dalla cronologia
È possibile eseguire un comando specifico dalla cronologia. L'uso dei punti esclamativi seguiti dal numero del comando come elencato dalla cronologia farà la magia. Ad esempio, il comando seguente riesegui il comando con il numero 7 (du –sh) come segue:
$ !7
Esegui di nuovo un comando precedente
In molte situazioni, è necessario eseguire un comando ancora e ancora. I comandi seguenti faranno quel lavoro eseguendo il comando precedente utilizzato.
$ !! Or $ !-1
Ricerca dei comandi
L'output generato dalla cronologia può essere utilizzato in diversi modi. Ad esempio, l'output della cronologia può essere passato a – more, tail, grep per recuperare l'output desiderato.
Cerca nella cronologia dei comandi "gratuitamente":$ history | grep free Per visualizzare solo gli ultimi 4 comandi:
$ history | tail -4
Il comando more consente di visualizzare l'output nel terminale una pagina alla volta:
$ history | more
Esegui un comando precedente che inizia con una parola specifica
L'uso dell'esclamazione seguita dalla parola specifica del comando farà la magia!. Supponiamo che l'utente abbia eseguito – ”free –h”. Digitando "!free" verrà eseguito nuovamente il comando "free -h".
Cancellazione cronologia
È possibile cancellare la cronologia con il comando seguente: $ history -c Questo cancella tutti i comandi nella memoria della shell bash per la sessione utente corrente.
Utili pseudonimi
Un alias è un nome breve dato a un comando lungo e complesso. Semplice alias di carattere singolo per il comando della cronologia.
$ alias 'h=history'
L'alias sottostante "ht" mostra i dieci comandi più recenti:
$ alias 'ht=history | tail'
L'alias sottostante "hg" consente di visualizzare tutti i comandi che corrispondono alla stringa data -
$ alias 'hg=history | grep'
Aggiungi questi alias nel file "~/.bashrc" per renderli persistenti ogni volta che il sistema si avvia.
Impostazioni di configurazione della cronologia
Variabile Bash Shell | Descrizione |
ARCHIVIO | Posizione del file fisico in cui la cronologia memorizza i comandi. Per impostazione predefinita, la shell bash è "~/.bash_history". L'impostazione "/dev/null", disabiliterà la registrazione della cronologia. |
HISTFILESIZE | Si riferisce a una serie di comandi da memorizzare nel file della cronologia. |
HISTSIZE | Si riferisce a una serie di comandi archiviati in memoria in un elenco cronologico. L'impostazione di un valore di 0 (zero) disabiliterà la registrazione della cronologia. |
HISTIGNORE | A volte è necessario non memorizzare alcun tipo di comando. Questa variabile accetta un elenco di modelli separati da due punti. Ad esempio, la configurazione seguente fa in modo che la funzione di cronologia non registri i comandi:ls, top e clear. HISTIGNORE=”ls*:top:clear” |
HISTTIMEFORMAT | Questa variabile HISTTIMEFORMAT consente di visualizzare la cronologia con timestamp. Se HISTTIMEFORMAT è impostato su '%F %T ' si ottengono i risultati seguenti. Questo è un comando molto utile per gli amministratori di sistema. |
CONTROLLO STORICO | HISTCONTROL aiuta a ignorare i duplicati. HISTCONTROL può essere impostato con valori: erasedups, ignorespace, ignoreups o ignoreboth. (separati da due punti) Di seguito sono riportati alcuni esempi: HISTCONTROL=ignoredups:erasedups HISTCONTROL=ignorebothSupponiamo che le voci della cronologia contengano duplicati come segue ("top" e "ls –latr" vengono ripetuti consecutivamente)Se HISTCONTROL è stato impostato su "ignoredups ” quindi la cronologia sarebbe stata visualizzata come di seguito: |
Impostazioni di configurazione avanzate
Bash mantiene l'elenco dei comandi internamente in memoria e vengono scritti nel file configurato (l'impostazione predefinita è .bash_history) all'uscita. Quando l'utente esce dalla shell, le ultime righe $HISTSIZE vengono copiate dall'elenco della cronologia nel file impostato su $HISTFILE. Se un utente ha effettuato l'accesso con molte sessioni bash, solo l'ultimo a uscire avrà la sua cronologia salvata. Nel caso in cui la cronologia dei comandi debba essere scritta immediatamente come e quando un comando viene eseguito in una sessione utente, è possibile impostare la seguente configurazione nel file “.bashrc”.
$ shopt -s istappend $ PROMPT_COMMAND=”storia -a; storia -c; history -r" "shopt –s histappend" abilita append invece di sovrascrivere la cronologia.
"history -a" viene utilizzato per aggiungere i comandi della cronologia in memoria a ~/.bash_history
"history -c" viene utilizzato per cancellare i comandi della cronologia in memoria
"history -r" viene utilizzato per leggere i comandi della cronologia da ~/.bash_history alla memoria
Un tipico file "~/.bashrc" con l'impostazione di configurazione relativa alla cronologia verrà appaiono come di seguito:# controlla la dimensione dei comandi da registrare in memoria
HISTSIZE=2000# controlla la dimensione dei comandi da memorizzare nel file
HISTFILESIZE=10000
# posizione del file fisico in cui vengono scritti i comandi
HISTFILE=/var/users/rjujare/.bash_history
#Formato per scopi di registrazione e visualizzazione:inclusione del timestamp
HISTTIMEFORMAT='%F %T '
# ignora i comandi comuni come ls
HISTIGNORE="ls:id:uname:clear:top"
# ignora i comandi duplicati e i comandi che iniziano con spazio
HISTCONTROL=ignoreboth
# append, non sovrascrivere la cronologia
shopt -s histappend
PROMPT_COMMAND=”history -a; storia -c; cronologia -r"
Come si salva la configurazione?
Apri il file ~/.bashrc con il tuo editor preferito per modificare le impostazioni. Al termine delle modifiche, salva il file ed esci. Per ottenere l'effetto di modifica, crea il file utilizzando il comando 'sorgente' come segue:
$ source ~/.bashrc
Conclusione
Il guscio Bash viene fornito con molte funzioni utili e una di queste è la cronologia. Queste funzionalità migliorano notevolmente la produttività degli amministratori e anche degli utenti regolari. Non dimenticare di condividere le tue esperienze con la storia!