Android

Příkaz historie v linuxu (bash history)

The mind behind Linux | Linus Torvalds

The mind behind Linux | Linus Torvalds

Obsah:

Anonim

, budeme hovořit o příkazu history , který vám umožní zobrazit seznam dříve provedených příkazů, prohledávat seznam a manipulovat s historickým souborem.

Používání historie Rozšíření příkazů a historie

history je vestavěná skořápka a její chování se může mírně lišit od skořápky k skořápce. Pokryjeme vestavěnou verzi history Bash.

Ve své nejjednodušší podobě, když je příkaz history vyvolán bez jakékoli možnosti nebo argumentu, 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 se vrátí zpět. V následujícím příkladu provádíme příkaz na řádku 467 :

!467

Dalším způsobem provedení příkazu je použití rozšíření !word word odkazuje na poslední příkaz začínající na 'slovo'.

history obvykle zobrazuje mnoho řádků výstupu, které se nevejdou na obrazovku. Chcete-li zobrazit výstup po jedné stránce najednou, přidejte jej do programu pageru, jako je příkaz more či less :

history | less

Chcete-li zobrazit posledních n řádků, předejte číslo jako argument příkazu. Chcete-li například zobrazit pouze posledních pět řádků ze seznamu historie, který byste napsali:

history -5

Pomocí kláves down šipkami up a down můžete procházet položky v seznamu. Když se zobrazí hledaný příkaz, stiskněte Enter pro jeho provedení.

Typ !! provést předchozí příkaz:

!!

To je užitečné zejména tehdy, když zapomenete přikázat příkaz sudo a namísto opakovaného zadání příkazu můžete napsat:

sudo !!

!-1 je stejné jako !! a provede poslední příkaz ze seznamu historie !-2 vteřiny do konce atd.

^word1^word2^ umožňuje znovu spustit poslední příkaz nahrazující „word1“ za „word2“. Pokud jste omylem zadali sduo command místo sduo command sudo command , můžete příkaz opakovat pomocí správného slova s:

^sduo^sudo^

Pomocí příkazu grep filtrujte výstup. Například pro zobrazení všech příkazů včetně „nano“, které byste spustili:

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 příkaz nano setup.py jednoduše zadejte:

!356

Dalším způsobem prohledávání historie příkazů je stisknutí 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í řádek. Chcete-li přejít k dalšímu odpovídajícímu návrhu, stiskněte znovu klávesu Ctrl-R .

V příručce Bash najdete další informace o historii rozšíření, modifikátory a označení.

Uložení seznamu historie

Ve výchozím nastavení při spuštění nové relace přečte Bash seznam historie ze souboru .bash_history . Seznam příkazů, které se provádějí v aktuální relaci, se uloží do paměti a po uzavření relace se uloží do souboru.

Možnost -a umožňuje uložit aktuální seznam historie relací do souboru .bash_history :

history -a

Možnost -w zapíše úplný seznam historie do souboru historie.

history -w

Vymazání historie

Příkaz history umožňuje vymazat celý seznam historie nebo odstranit určité části.

Chcete-li vymazat seznam historie, použijte volbu -c :

history -c

Chcete-li odstranit konkrétní čáru nebo čáry mezi počáteční a koncovou pozicí ze seznamu historie, použijte volbu -d .

Chcete-li například odstranit řádky mezi 365 a 375 (včetně těchto řádků), zadejte:

history -d 365 375

Při použití záporného celého čísla se řádky počítají od konce seznamu historie.

Příkazy výše vymaže seznam historie, který je uložen v paměti, ale neodstraní položky ze souboru .bash_history na disku. Chcete-li vymazat soubor, musíte do souboru napsat seznam historie:

history -c history -w

Změna chování historie

Chování historie basů lze definovat pomocí několika různých proměnných prostředí. Při změně chování historie nastavte proměnné v ~/.bashrc nebo v jakémkoli jiném konfiguračním souboru, který se načte při přihlášení uživatele.

Ve výchozím nastavení udržuje Bash 500 řádků v seznamu historie příkazů. Proměnná HISTSIZE umožňuje tuto hodnotu změnit. Chcete-li jej nastavit na 10000, přidejte do souboru .bashrc následující řádek:

HISTSIZE=10000

Proměnná HISTCONTROL přijímá seznam hodnot oddělených dvojtečkou, které definují, jak se příkazy ukládají do seznamu historie:

  • ignorespace - příkazy začínající mezerou nejsou ukládány do seznamu historie. ignoredups - duplicitní příkazy se neuloží. ignoreboth - je zkratka, včetně ignorespace a ignoredups .

HISTCONTROL=ignoreboth

Když je nastavena proměnná HISTTIMEFORMAT , Bash HISTTIMEFORMAT časové razítko provádění příkazu na každém řádku.

Pokud například nastavíte:

HISTTIMEFORMAT="%F %T: "

Historie bude zobrazena v následujícím formátu:

413 2019-10-27 21:13:07: sudo nano /etc/hosts

Závěr

Příkaz history zobrazí seznam dříve provedených příkazů. Například můžete použít historii k zobrazení dlouhého příkazu, který jste dříve použili, a na který si nemůžete vzpomenout.

historický terminál