
Pokud trávíte hodně času na příkazovém řádku, prohlížení historie dříve spuštěných příkazů může být užitečnou funkcí, která vám může usnadnit každodenní práci a zlepšit vaši produktivitu.
V tomto článku budeme hovořit o history
příkaz, který vám umožňuje zobrazit seznam dříve provedených příkazů, prohledávat seznam a manipulovat se souborem historie.
Použití history
Rozšíření příkazů a historie #
history
je vestavěný shell a jeho chování se může mírně lišit od shellu k shellu. Pokryjeme verzi history
vestavěnou do Bash .
V nejjednodušší podobě, když je vyvolána bez jakékoli možnosti nebo argumentu, history
zobrazí celý seznam historie s čísly řádků.
history
...
467 git push
468 tail -f var/logs/error
469 nano +22,5 functions.sh
470 source project-env/bin/activate
471 history
Zadáním !n
provede n-tý příkaz ze seznamu historie a !-n
příkaz n řádků zpět. V následujícím příkladu provádíme příkaz na řádku 467
:
!467
Dalším způsobem, jak provést příkaz, je použít !word
rozšíření. word
odkazuje na nejnovější příkaz začínající „slovem“.
Obvykle history
zobrazuje mnoho řádků výstupu, které se nevejdou na obrazovku. Chcete-li zobrazit výstup jednu stránku po druhé, přepojte ji do programu pageru, jako je more
nebo less
příkaz:
history | less
Chcete-li zobrazit poslední n
řádků, předejte číslo jako argument příkazu. Chcete-li například zobrazit pouze posledních pět řádků ze seznamu historie, zadejte:
history -5
Použijte up
a down
šipky pro procházení položek v seznamu. Když se zobrazí hledaný příkaz, stiskněte Enter
k provedení.
Zadejte !!
pro provedení předchozího příkazu:
!!
To je zvláště užitečné, když zapomenete spojit příkaz s sudo
a místo opětovného psaní příkazu můžete napsat:
sudo !!
!-1
je stejný jako !!
a provede poslední příkaz ze seznamu historie, !-2
předposlední a tak dále.
^word1^word2^
rozšíření umožňuje znovu spustit poslední příkaz, který nahradí „slovo1“ slovem „slovo2“. Pokud jste omylem zadali sduo command
místo sudo command
příkaz můžete zopakovat pomocí správného slova pomocí:
^sduo^sudo^
Použijte grep
příkaz k filtrování výstupu. Chcete-li například zobrazit všechny příkazy včetně „nano“, spusťte:
history | grep nano
302 sudo nano /etc/resolv.conf
356 nano setup.py
413 sudo nano /etc/hosts
469 nano +22,5 functions.sh
Nyní, pokud chcete znovu spustit nano setup.py
příkaz jednoduše zadejte:
!356
Dalším způsobem, jak prohledávat historii příkazů, je stisknout Ctrl-R
. Výzva se změní na následující a můžete začít hledat dříve provedený příkaz.
(reverse-i-search)`':
Shell zobrazí odpovídající čáru. Chcete-li přejít na další odpovídající návrh, stiskněte Ctrl-R
znovu.
Další informace o rozšíření historie, modifikátorech a označeních naleznete v příručce Bash.
Uložení seznamu historie #
Ve výchozím nastavení při zahájení nové relace Bash čte seznam historie z .bash_history
soubor . Seznam příkazů, které jsou provedeny v aktuální relaci, je uložen v paměti a uložen do souboru, když je relace uzavřena.
Pokud jste otevřeli několik relací shellu, uloží se pouze historie relace, která byla uzavřena jako poslední.
-a
umožňuje uložit aktuální seznam historie relace do .bash_history
soubor:
history -a
-w
volba zapíše úplný seznam historie do souboru historie.
history -w
Vymazání historie #
history
umožňuje vymazat úplný seznam historie nebo odstranit určité části.
Chcete-li vymazat seznam historie, použijte -c
možnost:
history -c
Chcete-li odstranit konkrétní řádek nebo řádky mezi počáteční a koncovou pozicí ze seznamu historie, použijte -d
možnost.
Chcete-li například odstranit řádky mezi 365 a 375 (včetně těchto řádků), zadejte:
history -d 365 375
Pokud do -d
zadáte pouze jedno číslo příkaz odstraní daný řádek.
Při použití záporného celého čísla se řádky počítají zpět od konce seznamu historie.
Výše uvedené příkazy vymažou seznam historie, který je uložen v paměti, ale neodstraní položky z .bash_history
soubor na disku. Chcete-li soubor vymazat, musíte do souboru zapsat seznam historie:
history -c
history -w
Úprava chování historie #
Chování historie Bash lze definovat pomocí několika různých proměnných prostředí. Při úpravě chování historie nastavte proměnné v ~/.bashrc
nebo jakýkoli jiný konfigurační soubor, který se načte, když se uživatel přihlásí.
Ve výchozím nastavení Bash uchovává 500 řádků v seznamu historie příkazů. HISTSIZE
proměnná umožňuje změnit tuto hodnotu. Chcete-li jej nastavit na 10 000, přidejte do souboru .bashrc
následující řádek soubor:
HISTSIZE=10000
HISTCONTROL
proměnná přijímá dvojtečkou oddělený seznam hodnot, které definují, jak se příkazy ukládají do seznamu historie:
ignorespace
- příkazy začínající mezerou se neukládají do seznamu historie.ignoredups
- duplicitní příkazy se neukládají.ignoreboth
- je zkratka, včetněignorespace
aignoredups
.
HISTCONTROL=ignoreboth
Když HISTTIMEFORMAT
Pokud je nastavena proměnná, Bash přidá časové razítko provedení příkazu na každý řádek.
Pokud například nastavíte:
HISTTIMEFORMAT="%F %T: "
Historie se zobrazí v následujícím formátu:
413 2019-10-27 21:13:07: sudo nano /etc/hosts
Závěr č.
history
zobrazí seznam dříve provedených příkazů. Historii můžete například použít k zobrazení dlouhého příkazu, který jste použili dříve a který si nepamatujete.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.