Úvod
history
command v Linuxu je vestavěný nástroj shellu, který zobrazuje seznam příkazů použitých v relaci terminálu. history
umožňuje uživatelům znovu použít jakýkoli uvedený příkaz, aniž by jej museli znovu zadávat.
V tomto tutoriálu vám ukážeme, jak history
příkaz funguje a různé způsoby jeho použití.

Předpoklady
- Systém se systémem Linux.
- Účet s právy sudo.
- Přístup do okna terminálu.
Jak používat příkaz historie Linuxu
Pomocí history
příkaz bez voleb zobrazí seznam příkazů použitých od začátku relace terminálu:
history

Chcete-li zobrazit seznam historie příkazů s omezeným počtem položek, připojte toto číslo k history
příkaz. Chcete-li například zobrazit pouze posledních pět záznamů, použijte:
history 5

Jakmile zavřete terminál, prostředí Bash uloží nové záznamy historie příkazů do .bash_history soubor.
Použít datum a čas
Soubor .bashrc soubor ukládá nastavení prostředí Bash. Úpravou tohoto souboru můžete změnit výstupní formát history
příkaz.
Otevřete soubor .bashrc pomocí textového editoru, jako je Nano:
sudo nano .bashrc
Chcete-li změnit výstupní formát tak, aby zahrnoval datum a časová razítka, přidejte následující řádek do souboru .bashrc soubor:
export HISTTIMEFORMAT="%c "

Použití různých argumentů po HISTTIMEFORMAT
umožňuje upravit úroveň podrobností v časovém razítku:
%d
:Den%m
:Měsíc%y
:Rok%H
:Hodina%M
:Minuty%S
:sekund%F
:Celé datum (formát Y-M-D)%T
:Čas (formát H:M:S)%c
:Kompletní datum a časové razítko (formát Den-D-M-Y H:M:S)
Uložte změny do .bashrc soubor, znovu spusťte terminál a spusťte history
příkaz k potvrzení nového výstupního formátu:
history

Zobrazení velikosti vyrovnávací paměti historie
Soubor .bashrc obsahuje dvě položky, které řídí velikost vyrovnávací paměti historie:
HISTSIZE
:Maximální počet položek pro seznam historie.HISTFILESIZE
:Maximální počet záznamů v .bash_history soubor.

Úprava HISTSIZE
a HISTFILESIZE
hodnoty mění způsob, jakým shell Bash zobrazuje a ukládá historii příkazů.
Například změna HISTSIZE
hodnotu na 10
vytváří history
seznam příkazů zobrazuje maximálně 10 posledních záznamů.

Uložení změn do .bashrc soubor, opětovné spuštění terminálu a spuštění history
příkaz potvrdí nový výstupní formát:
history

Opakujte příkaz
Spuštění history
umožňuje znovu použít kterýkoli z příkazů v seznamu. Chcete-li například spustit první příkaz (sudo apt update
) znovu použijte:
!1

Přidání pomlčky (- ) před číslem příkazu začne počítání od konce seznamu. Chcete-li například znovu použít předposlední desátý příkaz (history 5
), použijte:
!-10

K opakování posledního příkazu použijte dvojité vykřičníky:
!!

Hledat příkaz podle řetězce
Přidáním řetězce za vykřičník se spustí nejnovější příkaz, který začíná tímto řetězcem. Chcete-li například znovu použít nejnovější příkaz, který začíná sudo
, použijte:
!sudo

Použití této metody může způsobit problémy, pokud shell spustí neočekávaný příkaz, zejména při hledání příkazu, který začíná sudo
. Jako preventivní opatření přidejte :p
argument zobrazí příkaz bez jeho spuštění, což vám umožní zkontrolovat příkaz a rozhodnout, zda jej chcete provést.
!sudo:p

Chcete-li vyhledat příkaz, který obsahuje řetězec, ale nemusí jím začínat, přidejte vedle vykřičníku otazník. Chcete-li například znovu použít poslední příkaz, který obsahuje echo
:
!?echo

Ve výše uvedeném příkladu shell znovu použije poslední příkaz, který obsahuje echo
řetězec, i když příkaz začíná sudo
.
Seznam odpovídajících příkazů
Kombinace history
a grep
umožňuje zobrazit seznam příkazů, které obsahují řetězec. Chcete-li například vypsat všechny příkazy, které obsahují ufw
, použijte:
history | grep ufw

Změňte provedený příkaz
Ke změně posledního provedeného příkazu použijte následující syntaxi:
^[old string]^[new string]^
Například ufw
příkaz k povolení portu 20 ukazuje, že port je již povolen:
sudo ufw allow 20/tcp

Pomocí výše uvedené syntaxe změňte číslo portu z 20 na 22:
^20^22^

Zabránit nahrávání příkazů v historii
Chcete-li zabránit nahrávání příkazů v seznamu historie, dočasně deaktivujte nahrávání pomocí:
set +o history
Chcete-li znovu povolit nahrávání, použijte:
set -o history
Smazat historii
Použijte -d
možnost s history
příkaz k odstranění příkazu ze seznamu historie. Například smažte příkaz číslo 87 pomocí:
history -d 87

Použijte -c
možnost vymazat celý seznam historie:
history -c
Aktualizujte soubor historie
Když ukončíte relaci terminálu, prostředí Bash uloží všechny aktualizace do seznamu historie příkazů. history
příkaz také umožňuje uložit změny v relaci terminálu.
Pomocí -a
možnost vám umožní připojit záznamy historie příkazů z této relace do .bash_history soubor:
history -a
Další metodou je použití -w
možnost uložit celý seznam historie do .bash_history soubor:
history -w