androide

Comando cronologia in linux (cronologia bash)

Important Linux Commands for Beginners: Linux Tutorial

Important Linux Commands for Beginners: Linux Tutorial

Sommario:

Anonim

, parleremo del comando history , che consente di visualizzare un elenco di comandi precedentemente eseguiti, cercare nell'elenco e manipolare il file della cronologia.

Utilizzo del comando History e History Expansions

history è una shell incorporata e il suo comportamento può differire leggermente da shell a shell. Tratteremo la versione integrata della history di Bash.

Nella sua forma più semplice, quando viene invocato senza alcuna opzione o argomento, il comando history visualizza l'intero elenco cronologico con i numeri di riga.

history

… 467 git push 468 tail -f var/logs/error 469 nano +22, 5 functions.sh 470 source project-env/bin/activate 471 history

Digitando !n esegue l'n-esimo comando dall'elenco cronologico e !-n il comando n ritorna indietro. Nel seguente esempio eseguiamo il comando sulla riga 467 :

!467

Un altro modo per eseguire un comando è usare l'espansione delle !word word riferisce al comando più recente che inizia con 'word'.

In genere, la history mostra molte righe di output che non si adattano allo schermo. Per visualizzare l'output una pagina alla volta, reindirizzarlo a un programma cercapersone come more o less comando:

history | less

Per visualizzare le ultime n righe, passare il numero come argomento al comando. Ad esempio, per visualizzare solo le ultime cinque righe dall'elenco cronologico digitare:

history -5

Utilizzare i tasti freccia up e down per spostarsi tra le voci nell'elenco. Quando viene visualizzato il comando che hai cercato, premi Enter per eseguirlo.

Digita !! per eseguire il comando precedente:

!!

Ciò è particolarmente utile quando si dimentica di eseguire un comando con sudo e invece di digitare nuovamente il comando è possibile digitare:

sudo !!

!-1 è uguale a !! ed esegue l'ultimo comando dall'elenco cronologico, ! !-2 dall'ultimo all'ultimo e così via.

^word1^word2^ espansione ^word1^word2^ consente di rieseguire l'ultimo comando sostituendo "word1" con "word2". Se hai digitato sduo command invece del sudo command puoi ripetere il comando usando la parola corretta con:

^sduo^sudo^

Utilizzare il comando grep per filtrare l'output. Ad esempio, per visualizzare tutti i comandi incluso "nano" dovresti eseguire:

history | grep nano

302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22, 5 functions.sh

Ora, se si desidera eseguire nuovamente il comando nano setup.py digitare semplicemente:

!356

Un altro modo per cercare nella cronologia dei comandi è premendo Ctrl-R . Il prompt cambierà nel seguente modo ed è possibile iniziare a cercare un comando precedentemente eseguito.

(reverse-i-search)`':

La shell mostrerà una linea corrispondente. Per passare al suggerimento corrispondente successivo, premi nuovamente Ctrl-R .

Controlla il manuale di Bash per ulteriori informazioni su History Expansion, modificatori e designatori.

Salvataggio dell'elenco cronologico

Per impostazione predefinita, quando si avvia una nuova sessione, Bash legge l'elenco della cronologia dal file .bash_history . L'elenco dei comandi eseguiti nella sessione corrente viene conservato in memoria e salvato nel file quando la sessione viene chiusa.

L'opzione -a consente di salvare l'elenco della cronologia delle sessioni corrente nel file .bash_history :

history -a

L'opzione -w scrive l'elenco cronologico completo nel file cronologico.

history -w

Annullamento della cronologia

Il comando history consente di cancellare l'elenco cronologico completo o rimuovere alcune parti.

Per cancellare l'elenco della cronologia, utilizzare l'opzione -c :

history -c

Per eliminare una o più righe specifiche tra le posizioni iniziale e finale dall'elenco cronologico, utilizzare l'opzione -d .

Ad esempio, per rimuovere le righe tra 365 e 375 (comprese quelle righe), digitare:

history -d 365 375

Quando viene utilizzato un numero intero negativo, le righe vengono conteggiate alla fine dell'elenco cronologico.

I comandi sopra cancellano l'elenco cronologico, che è conservato in memoria, ma non rimuove le voci dal file .bash_history sul disco. Per cancellare il file, è necessario scrivere l'elenco cronologico nel file:

history -c history -w

Modifica del comportamento cronologico

Il comportamento della cronologia di Bash può essere definito utilizzando diverse variabili di ambiente. Quando si modifica il comportamento della cronologia, impostare le variabili in ~/.bashrc o qualsiasi altro file di configurazione che viene caricato quando l'utente accede.

Per impostazione predefinita, Bash mantiene 500 righe nell'elenco della cronologia dei comandi. La variabile HISTSIZE ti consente di modificare questo valore. Per impostarlo su 10000 aggiungi la seguente riga al tuo file .bashrc :

HISTSIZE=10000

La variabile HISTCONTROL accetta un elenco di valori separati da due punti che definiscono il modo in cui i comandi vengono salvati nell'elenco della cronologia:

  • ignorespace : i comandi che iniziano con lo spazio non vengono salvati nell'elenco cronologico. ignoredups : i comandi duplicati non vengono salvati. ignoreboth - è una scorciatoia, che include sia ignorespace che ignoredups .

HISTCONTROL=ignoreboth

Quando viene impostata la variabile HISTTIMEFORMAT , Bash antepone un timestamp di esecuzione per il comando su ciascuna riga.

Ad esempio, se imposti:

HISTTIMEFORMAT="%F %T: "

La cronologia verrà visualizzata nel seguente formato:

413 2019-10-27 21:13:07: sudo nano /etc/hosts

Conclusione

Il comando history visualizza un elenco di comandi precedentemente eseguiti. Ad esempio, puoi usare la cronologia per visualizzare un lungo comando che hai usato prima che non ricordi.

terminale storico