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ů