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 -chistory -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ěignorespaceaignoredups.
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ář.