GNU/Linux >> Znalost Linux >  >> Linux

Příkaz historie v Linuxu (Bash History)

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ě ignorespace a ignoredups .
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ář.


Linux
  1. Analýza historie Bash v Linuxu

  2. 15 příkladů rozšíření historie Linuxu Bash, které byste měli vědět

  3. UNIX / Linux :Příklady příkazů historie bash pro opakování posledních příkazů

  1. Jak používat příkaz historie v Linuxu

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

  3. Jak vymazat historii Bash na Linuxu

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

  2. Linuxový příkaz mv

  3. Linux du command