GNU/Linux >> Znalost Linux >  >> Linux

Jak se vyhnout duplicitním záznamům v historii Bash v Linuxu

V tomto stručném průvodci se naučíme, jak se vyhnout duplicitním záznamům v historii Bash v Linuxu. Při práci z příkazového řádku jste možná spustili některé příkazy Linuxu vícekrát. Jak již víte, každý příkaz, který spustíme v terminálu, se uloží do souboru historie. Takže provádění stejných příkazů znovu a znovu by zaplnilo soubor historie. Dříve nebo později skončíte s příliš mnoha duplicitními záznamy v souboru historie.

Ve výchozím nastavení je v souboru historie uloženo 500 položek příkazů. V posledních systémech Ubuntu je velikost souboru 1000. Jakmile počet položek příkazů překročí výchozí limit, nejstarší položky budou ze seznamu historie odstraněny. Proto nemůžete načíst staré záznamy. Můžete samozřejmě zvětšit velikost souboru historie a uložit tolik záznamů, kolik chcete. Avšak namísto zvětšování velikosti souboru historie je mnohem lepší vyhnout se ukládání duplikátů v souboru historie.

Najděte umístění souboru historie

Historie příkazů je funkce specifická pro shell uložená na úrovni jednotlivých uživatelů. V závislosti na použitém prostředí SHELL se soubor historie uloží do konkrétního souboru. V systémech Linux, které používají Bash, jsou příkazy uloženy v ~/.bash_history soubor ve výchozím nastavení. Umístění souboru historie vašeho shellu můžete zkontrolovat spuštěním následujícího příkazu:

$ echo $HISTFILE

HISTFILE je zde proměnná, která se používá k definování názvu souboru, do kterého se ukládá historie příkazů.

Ukázkový výstup z mého Ubuntu desktop:

/home/sk/.bash_history

V CentOS 8 , mám následující výstup:

/root/.bash_history
Změnit umístění souboru historie

Pokud chcete změnit výchozí umístění, spusťte:

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

Nahraďte "~/.custom_file" svým vlastním ve výše uvedeném příkazu.

Chcete-li použít změny, spusťte následující příkaz:

$ source ~/.bashrc

Nyní se podívejme, jak se vyhnout ukládání stejných příkazů vícekrát v ~/.bash_history soubor.

Vyhněte se duplicitním záznamům v historii Bash v Linuxu

Pomocí příkazu "historie" získáme poslední provedené příkazy. Podívejte se na následující příklad:

$ history | grep ls

Ukázkový výstup:

    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

Jak můžete vidět na výše uvedeném výstupu, "ls" příkaz byl zaznamenán několikrát. Tyto duplikáty můžeme ovládat pomocí HISTCONTROL variabilní. HISTCONTROL může mít následující hodnoty:

  • ignorespace - řádky začínající mezerou nebudou uloženy do historie.
  • ignorovaní - řádky odpovídající předchozímu záznamu historie nebudou uloženy. Jinými slovy, duplikáty jsou ignorovány.
  • oba ignorovat - Je to zkratka pro hodnoty "ignorespace" a "ignoredups". Pokud tyto dvě hodnoty nastavíte na proměnnou HISTCONTROL, řádky začínající mezerou a duplikáty nebudou uloženy.
  • erasedups - eliminovat duplikáty v celé historii.

Abyste se vyhnuli duplicitním záznamům v historii Bash v Linuxu, upravte svůj ~/.bashrc soubor:

$ nano ~/.bashrc

Na konec přidejte následující řádek:

export HISTCONTROL=ignoredups

Uložte a zavřete soubor. Zde jsme před proměnnou HISTCONTROL uvedli "export". To znamená, že proměnná je dostupná všem podprocesům. Další podrobnosti zde .

Případně použijte následující jednovrstvý:

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

Nyní spusťte následující příkaz, aby se změny projevily:

$ source ~/.bashrc

Nebo se odhlaste a znovu přihlaste, abyste použili změny.

Od této chvíle nebudou duplicitní záznamy zaznamenávány. Můžete to ověřit spuštěním stejného příkazu vícekrát a zobrazením seznamu historie pomocí následujícího příkazu:

$ history

Proměnnou HISTCONTROL můžete také nastavit více hodnot s oddělenými dvojtečkami, jak je uvedeno níže:

export HISTCONTROL=ignoredups:erasedups

Další podrobnosti najdete na manuálové stránce Bash:

$ man bash

Související čtení:

  • Jak vymazat historii příkazového řádku v systému Linux
  • Jak vymazat konkrétní příkaz z historie Bash v Linuxu
  • Jak zobrazit historii bash bez čísel řádků

Linux
  1. Jak používat příkazy historie Bash

  2. Jak vymazat historii příkazového řádku BASH v Linuxu

  3. Jak vymazat konkrétní příkaz z historie Bash v Linuxu

  1. Jak vymazat historii Bash na Linuxu

  2. Analýza historie Bash v Linuxu

  3. Jak přejmenovat soubor v Linuxu?

  1. Jak přesunout soubor v Linuxu

  2. Jak zkontrolovat syslog v Bash na Linuxu?

  3. Jak uchovám historii bash napříč relacemi?