GNU/Linux >> Linux Esercitazione >  >> Linux

Come evitare voci duplicate nella cronologia di Bash in Linux

In questa breve guida impareremo come evitare voci duplicate nella cronologia di Bash in Linux. Quando si lavora dalla riga di comando, è possibile che alcuni comandi Linux siano stati eseguiti più volte. Come già sai, ogni comando che eseguiamo nel terminale viene salvato nel file di cronologia. Quindi eseguire gli stessi comandi più e più volte riempirebbe il file della cronologia. Prima o poi, ti ritroverai con troppe voci duplicate nel file della cronologia.

Per impostazione predefinita, nel file di cronologia vengono memorizzate 500 voci di comando. Nei recenti sistemi Ubuntu, la dimensione del file è 1000. Una volta che il numero di voci di comando ha superato il limite predefinito, le voci più vecchie verranno eliminate dall'elenco della cronologia. Quindi non puoi recuperare le vecchie voci. Ovviamente puoi aumentare le dimensioni del file della cronologia e salvare tutte le voci che desideri. Tuttavia, invece di aumentare la dimensione del file di cronologia, è molto meglio evitare di salvare i duplicati nel file di cronologia.

Trova la posizione del file della cronologia

La cronologia dei comandi è una funzionalità specifica della shell memorizzata per utente. A seconda della SHELL utilizzata, il file della cronologia viene salvato in un file specifico. Nei sistemi Linux che utilizzano Bash, i comandi vengono salvati in ~/.bash_history file per impostazione predefinita. Puoi controllare la posizione del file di cronologia della tua shell eseguendo il seguente comando:

$ echo $HISTFILE

Qui, HISTFILE è una variabile utilizzata per definire il nome del file in cui viene salvata la cronologia dei comandi.

Esempio di output dal mio Ubuntu desktop:

/home/sk/.bash_history

In CentOS 8 , ho ottenuto il seguente output:

/root/.bash_history
Modifica la posizione del file della cronologia

Se desideri modificare la posizione predefinita, esegui:

$ echo "export HISTFILE=~/.custom_file" >>~/.bashrc

Sostituisci "~/.custom_file" con il tuo nel comando precedente.

Esegui il comando seguente per applicare le modifiche:

$ source ~/.bashrc

Ora vediamo come evitare di salvare più volte gli stessi comandi in ~/.bash_history file.

Evita voci duplicate nella cronologia di Bash in Linux

Recuperiamo gli ultimi comandi eseguiti usando il comando "cronologia". Dai un'occhiata al seguente esempio:

$ history | grep ls

Risultato di esempio:

    8  lsb_release -a
   13  ls -l
   14  lsb_release -a
   17  ls -l
   20  ls -l
   23  lsb_release -a
   27  ls
   29  lsb_release -a
   32  ls
   36  ls
   42  ls
   44  lsb_release -a
   62  history | grep ls

Come puoi vedere nell'output sopra, "ls" il comando è stato registrato più volte. Possiamo controllare questi duplicati utilizzando HISTCONTROL variabile. HISTCONTROL può avere i seguenti valori:

  • ignora spazio - le righe che iniziano con uno spazio non verranno salvate nella cronologia.
  • ignorati - le righe corrispondenti alla voce della cronologia precedente non verranno salvate. In altre parole, i duplicati vengono ignorati.
  • ignora entrambi - È un'abbreviazione per i valori "ignorespace" e "ignoredups". Se imposti questi due valori sulla variabile HISTCONTROL, le righe che iniziano con uno spazio e i duplicati non verranno salvati.
  • cancellazioni - elimina i duplicati nell'intera cronologia.

Quindi, per evitare voci duplicate nella cronologia di Bash in Linux, modifica il tuo ~/.bashrc file:

$ nano ~/.bashrc

Aggiungi la seguente riga alla fine:

export HISTCONTROL=ignoredups

Salva e chiudi il file. Qui, abbiamo prefissato la variabile HISTCONTROL con "export". Significa che la variabile è disponibile per tutti i sottoprocessi. Maggiori dettagli, qui .

In alternativa, usa il seguente one-liner:

$ echo "export HISTCONTROL=ignoredups" >>~/.bashrc

Ora esegui il seguente comando per rendere effettive le modifiche:

$ source ~/.bashrc

In alternativa, esci e accedi nuovamente per applicare le modifiche.

D'ora in poi, le voci duplicate non verranno registrate. Puoi verificarlo eseguendo lo stesso comando più volte e visualizzare l'elenco della cronologia utilizzando il comando seguente:

$ history

Puoi anche impostare più valori sulla variabile HISTCONTROL con due punti separati come di seguito:

export HISTCONTROL=ignoredups:erasedups

Per maggiori dettagli, fare riferimento alla pagina man di Bash:

$ man bash

Lettura correlata:

  • Come cancellare la cronologia della riga di comando in Linux
  • Come cancellare un comando specifico dalla cronologia di Bash in Linux
  • Come visualizzare la cronologia di Bash senza numeri di riga

Linux
  1. Come usare i comandi della cronologia di Bash

  2. Come cancellare la cronologia della riga di comando BASH in Linux

  3. Come cancellare un comando specifico dalla cronologia di Bash in Linux

  4. Analisi della cronologia di Bash in Linux

  5. Come rinominare un file in Linux?

Come montare file ISO su Linux

Come utilizzare gli operatori di test di file Bash in Linux

Come eseguire il backup e il ripristino della cronologia del terminale Linux

Come abilitare il timestamp nella cronologia di Bash in Linux

Come collegare simbolicamente un file in Linux

Come cancellare la cronologia di Bash in Linux e Mac