GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione approfondita del comando della cronologia in Linux

Quando utilizzi frequentemente la riga di comando di Linux, l'uso efficace del comando history può essere un notevole aumento della produttività.

In Linux, c'è un comando molto utile per mostrarti tutti gli ultimi comandi che sono stati usati di recente. Il comando si chiama semplicemente history .

Visualizza timestamp

In genere quando digiti history nella riga di comando, per impostazione predefinita vedi un numero seguito dai comandi che hai usato di recente. A scopo di controllo, può essere utile visualizzare il timestamp insieme al comando come mostrato di seguito.

Per abilitare il timestamp nella history output del comando, è necessario configurare HISTTIMEFORMAT Bash variabile.

export HISTTIMEFORMAT="%F %T "
history | more
1  2020-06-25 19:02:39 systemctl restart network
2  2020-06-25 19:02:43 exit
3  2020-06-25 19:02:47 id
4  2020-06-25 19:02:56 cat /etc/hosts

Cronologia comandi di ricerca

Questa potrebbe essere la funzione utilizzata più di frequente nella history comando . Quando hai già eseguito un comando molto lungo, puoi semplicemente cercare nella cronologia utilizzando una parola chiave ed eseguire nuovamente lo stesso comando senza doverlo digitare completamente.

  1. Premi Control+R e digita la parola chiave.
  2. Premi invio quando vedi il tuo comando, che eseguirà il comando dalla cronologia.

Nell'esempio seguente, ho cercato host , che mostrava il comando precedente cat /etc/hosts nella cronologia che conteneva la parola host .

(reverse-i-search)`host': cat /etc/hosts
cat /etc/hosts
#<ip-address>	<hostname.domain.org>	<hostname>
127.0.0.1	localhost.localdomain	localhost	server1
::1		localhost.localdomain	localhost	server1

A volte vuoi modificare un comando dalla cronologia prima di eseguirlo. Ad esempio, puoi cercare systemctl , che visualizzerà systemctl restart network dalla cronologia dei comandi, selezionare questo comando (premendo ESC chiave) e cambia il restart per stop .

Quindi eseguilo di nuovo premendo semplicemente Enter .

(reverse-i-search)`systemctl': systemctl stop network
systemctl stop network

Ripeti l'ultimo comando eseguito

A volte potresti finire per ripetere i comandi precedenti per vari motivi. Di seguito sono riportati i 4 diversi modi per ripetere l'ultimo comando eseguito.

  1. Utilizza la up arrow per visualizzare il comando precedente e premere invio per eseguirlo.
  2. Digita !! e premi invio dalla riga di comando
  3. Digita !-1 e premi invio dalla riga di comando.
  4. Premi Control+P visualizzerà il comando precedente, premere invio per eseguirlo.

Esegui un comando specifico

Nell'esempio seguente, se vuoi ripetere il comando n. 4, puoi eseguire !4 come mostrato di seguito.

history | more
systemctl restart network
exit
id
cat /etc/hosts
!4
cat /etc/hosts
#<ip-address>	<hostname.domain.org>	<hostname>
127.0.0.1	localhost.localdomain	localhost	server1
::1		localhost.localdomain	localhost	server1

Esegui il comando precedente che inizia con una parola specifica

Digita ! seguite dalle lettere iniziali del comando che si desidera rieseguire. Nell'esempio seguente, digitando !ps e invio, eseguito il comando precedente che inizia con ps , che è ps aux | grep yp .

!ps
ps aux | grep yp
root     16947  0.0  0.1  36516  1264 ?        Sl   13:10   0:00 ypbind
root     17503  0.0  0.0   4124   740 pts/0    S+   19:19   0:00 grep yp

Limita il numero di elementi della cronologia

Questo è controllato da HISTSIZE e HISTFILESIZE variabili della shell Bash integrate. Aggiungi le seguenti due righe al tuo ~/.bashrc file e disconnettersi, quindi accedere nuovamente.

HISTSIZE=1500
HISTFILESIZE=1500

Di conseguenza, ora history è impostato per memorizzare 1500 comandi.

Cambia il nome del file della cronologia

Per impostazione predefinita, history è memorizzato in ~/.bash_history file.

Aggiungi la seguente riga a .bash_profile file e accedere nuovamente alla shell Bash, per memorizzare il comando della cronologia in .my_commandline file invece di .bash_history file.

HISTFILE=/root/.my_commandline

Questo viene utilizzato quando si desidera tenere traccia dei comandi eseguiti da terminali diversi utilizzando nomi di file di cronologia diversi.

Elimina la voce ripetuta continua dalla cronologia

Nell'esempio seguente pwd è stato digitato tre volte, quando fai la cronologia, puoi vedere tutte e 3 le occorrenze continue di essa. Per eliminare i duplicati, imposta HISTCONTROL a ignoredups come mostrato di seguito.

history | tail -4
44  pwd
45  pwd
46  pwd
47  history | tail -4
export HISTCONTROL=ignoredups
history | tail -3
56  export HISTCONTROL=ignoredups
57  pwd
58  history | tail -4

Cancella i duplicati nell'intera cronologia

I ignoredups mostrato sopra rimuove i duplicati solo se sono comandi consecutivi. Per eliminare i duplicati nell'intera cronologia, imposta il HISTCONTROL a erasedups come mostrato di seguito.

export HISTCONTROL=erasedups
pwd
systemctl restart network
history | tail -3
38  pwd
39  systemctl restart network
40  history | tail -3
ls -l
systemctl restart network
history | tail -6
35  export HISTCONTROL=erasedups
36  pwd
37  history | tail -3
38  ls -l
39  systemctl restart network
40  history | tail -6

Forza la cronologia a non ricordare un comando particolare

Quando esegui un comando, puoi istruire history ignorare il comando impostando HISTCONTROL per ignorespace e digitando uno spazio davanti al comando come mostrato di seguito.

Vedo molti amministratori di sistema junior entusiasti di questo, poiché possono nascondere un comando dalla cronologia. È bene capire come ignorespace lavori. Ma, come best practice, non nascondere di proposito nulla dalla cronologia.

export HISTCONTROL=ignorespace
ls -ltr
pwd
 systemctl restart network #Note that there is a space at the beginning of service, to ignore this command from history
history | tail -3
67  ls -l
68  pwd
69  history | tail -3

Cancella tutta la cronologia precedente

A volte potresti voler cancellare tutta la history precedente , ma vuoi che la cronologia vada avanti.

history -c

Parole sostitutive dai comandi della cronologia

Durante la ricerca nella history , potresti voler eseguire un comando diverso ma utilizzare lo stesso parametro del comando che hai appena cercato.

Nell'esempio seguente, il !!:$ accanto a vi comando ottiene l'argomento dal comando precedente al comando corrente.

ls nginx.conf
nginx.conf
vi !!:$
vi nginx.conf

Nell'esempio seguente, il !^ accanto al comando vi ottiene il primo argomento dal comando precedente (cioè cp comando) al comando corrente (cioè vi comando).

cp nginx.conf nginx.conf.bak
vi  !^
vi nginx.conf

Sostituisci un argomento specifico con un comando specifico

Nell'esempio seguente, !cp:2 cerca il comando precedente nella cronologia che inizia con cp e prende il secondo argomento di cp e lo sostituisce con il comando ls -l come mostrato di seguito.

cp ~/longname.txt /really/a/very/long/path/long-filename.txt
ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt

Nell'esempio seguente, !cp:$ cerca il comando precedente nella cronologia che inizia con cp e prende l'ultimo argomento (in questo caso, che è anche il secondo argomento come mostrato sopra) di cp e lo sostituisce con il comando ls -l come mostrato di seguito.

ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt

Disabilita l'utilizzo della cronologia

Se vuoi disabilitare la history tutti insieme e non vuoi che la shell Bash ricordi i comandi che hai digitato, imposta il HISTSIZE a 0 come mostrato di seguito.

export HISTSIZE=0

Ignora comandi specifici dalla cronologia

A volte potresti non voler ingombrare la cronologia con comandi di base come pwd e ls . Usa HISTIGNORE per specificare tutti i comandi che vuoi ignorare dalla cronologia.

Tieni presente che l'aggiunta di ls al HISTIGNORE ignora solo ls e non ls -l . Quindi, devi fornire il comando esatto che vorresti ignorare dalla cronologia.

export HISTIGNORE="pwd:ls:ls -ltr:"
pwd
ls
ls -l
systemctl restart network
history | tail -3
79  export HISTIGNORE="pwd:ls:ls -l:"
80  systemctl restart network
81  history
[Note that history did not record pwd, ls and ls -l]

Per ulteriori informazioni sulla history comando in Linux, consulta la sua pagina del manuale.


Linux
  1. Come usare il comando cronologia in Linux

  2. ls Command in Linux:17 esempi utili spiegati

  3. comando IP Linux

  4. comando cd di Linux

  5. Comando della cronologia di Linux

Il comando Tr in Linux spiegato con esempi

Spiegazione del comando procinfo in Linux

Spiegazione del comando sorgente su Linux

Spiegazione del comando dello schermo su Linux

Spiegazione del comando Arping su Linux

Comando cronologia in Linux:visualizza la cronologia del terminale Linux