24Aug

Jak používat vaši historii basů v terminálu Linux nebo MacOS

click fraud protection

Bash shell je standardní terminálové prostředí, které je součástí většiny distribucí Linuxu a je součástí softwaru macOS a je k dispozici pro instalaci v systému Windows 10. Vzpomíná si na zadané příkazy a ukládá je do souboru historie. Pravděpodobně znáte několik základů historie bash, ale je to mnohem silnější, než byste si mohli uvědomit. Klávesové zkratky

Chcete-li procházet historii bash, můžete použít několik užitečných klávesových zkratek, které používají bash. Stiskněte klávesové zkratky a příkazy, které jste použili dříve, se objeví na výzvě.

  • Šipka nahoru nebo Ctrl + P : Přejděte na předchozí příkaz ve své historii. Několikrát stiskněte tlačítko pro přechod zpět pomocí příkazů, které jste použili.
  • šipka dolů nebo Ctrl + N : Přejděte na další příkaz ve své historii. Několikrát stiskněte klávesu, abyste mohli procházet dopředu pomocí příkazů, které jste použili.
  • Alt + R : Vrátit všechny změny příkazu, který jste vybrali z historie, pokud jste jej upravili na aktuálním řádku.
instagram viewer

Bash má také speciální režim "Recall", který můžete použít k hledání příkazů, které jste dříve spustili, než aby je procházeli jeden po druhém.

  • Ctrl + R : Vyvolání posledního příkazu, který odpovídá zadaným znakům. Stiskněte tuto zkratku a začněte psát prohledávání historie bash pro příkaz.
  • Ctrl + O : Spusťte příkaz, který jste našli pomocí kláves Ctrl + R.
  • Ctrl + G : Nechte režim hledání historie bez spuštění příkazu.

Zobrazení historie basů

Můžete vytisknout celou historii bash na obrazovku tím, že spustíte jediný příkaz:

history

Zobrazí se seznam všech příkazů ve vaší historii bash spolu s číslem vlevo od každého. Příkaz s "1" vedle něj je nejstarším příkazem ve vaší historii bash, zatímco příkaz s nejvyšším číslem je poslední.

Pomocí výstupu můžete udělat vše, co se vám líbí.Například byste jej mohli přivést k příkazu grepcommand a vyhledat historii příkazů.Historie

grep your_search

Dalo by se také připojit k příkazu tail pro zobrazení pouze malého počtu posledních příkazů, které jste spustili. Například následující příkaz zobrazí poslední 5 položek ve vaší historii. Historie

tail -5

Spuštění příkazů z historie

Bash může rychle rozbalit předchozí příkazy nebo je rozbalit a modifikovat. Tato funkce je známá jako "rozšíření historie" a používá vykřičník známý jako "bang".Stačí je zadejte na výzvu a stisknutím klávesy Enter spusťte je, jako byste spustili jiný příkaz.

Chcete-li spustit konkrétní příkaz z vaší historie podle jeho čísla, použijte následující příkaz:

! #

Řekněme například, že chcete spustit 12. příkaz z vaší historie bash. To je příkaz s "12" nalevo od něj, když spustíte příkaz historie. Zadáte následující příkaz.

! 12

Chcete-li znovu spustit poslední příkaz, který jste spustili, zadejte následující.To má stejný efekt jako stisknutí šipky Nahoru k zobrazení předchozího příkazu a poté stisknutím klávesy Enter.

! !

K příkazu můžete také zadat určitý počet řádků zpět. Například, -2 by spustil druhý až poslední příkaz, který jste spustili.!!znamená to samé! -1.

Tato rozšíření funguje kdekoli na trati. Můžete přidat vše, co se vám líbí před nebo po!nebo některý z dalších výrazů v této části. Například můžete zadat následující příkaz, abyste znovu spustili poslední příkaz, který jste spustili pomocí sudo a dali mu oprávnění root. To je zvláště užitečné, pokud zapomenete přidat sudo před spuštěním příkazu.

sudo! !

Můžete například spustit předchozí příkaz a potrubí jeho výstup do grep pro hledání nějakého textu.

! !|grep text

Chcete-li vyhledat příkaz ve své historii a spustit jej, zadejte následující.Toto provede poslední příkaz, který odpovídá zadanému textu:

! Text

Pokud jste tedy nedávno spustili příkaz, který začal příkazem ping, můžete spustit následující příkaz a vyhledat jej. Budete vyhledávat zpět svou historii, najděte nejnovější příkaz, který začíná písmenem "pi" a okamžitě jej spusťte:

! Pi

K některému z výše uvedených rozšíření můžete připojit: p a příkaz bash vytiskne příkaz k terminálu bez jeho spuštění.To je užitečné, pokud chcete potvrdit, že vybíráte správný příkaz před jeho spuštěním.

! 12: p! !: p! Text: p

Opětovné použití argumentů z historie

Bash také umožňuje spustit nový příkaz, ale použít argumenty z předchozích příkazů ve vaší historii. To vám může pomoci rychle opakovat dlouhé nebo složité argumenty, aniž byste je museli opakovat. Příkaz

$

Řekněme například, že jste spustili příkaz dotykem /home/chris/ some_long_file_name_you_dont_want_to_type_again. Nyní chcete spustit příkaz nano /home/chris/ some_long_file_name_you_dont_want_to_type_again. Spíše než zadat celou věc od začátku, můžete spustit:

nano! $

!! $ By bash automaticky vyplnil poslední argument z předchozího příkazu.

Toto vyplňuje pouze poslední argument. Takže pokud spustíte ping google.com -c 4 a pak spustíte ping! $, Bude to pouze rozšířit na "ping 4".

Chcete-li tuto situaci vyřešit, můžete použít první trik pro rozbalení prvního argumentu na řádku než příkazu

! ^

Pokud jste spustili ping google.com -c 4 a poté spustili ping! ^,bash by to rozšířil na "ping google.com".

Pro vyplnění všech argumentů použitých v předchozím příkazu namísto jediného argumentu byste použili následující příkaz:

! *

Takže pokud jste spustili ping!* místo toho by bash automaticky vyplnil všechny argumenty, které jste použili v předchozím příkazu

Můžete použít stejný trik, který používáte k spouštění příkazů z historie, abyste získali argumenty od nich: Použijte následující formulář:

command! abc:#

Spustili jsme například příkaz sudo hostname ubuntu dříve. Pokud spustíme následující příkaz, bash prohledá zpět historii a najde poslední příkaz začínající písmeny, které zadáváme, a vyplní argument, který specifikujeme.běžíme echo! su: 2, bash se vrátí zpět a najde poslední příkaz začínající "su" a vyplní druhý argument, který je "ubuntu".

Další triky fungují, jak byste mohli očekávat. Například nahrazení čísla hvězdičkou, známou jako zástupný znak, způsobuje, že bash vyplní všechny argumenty z příkazu:

příkaz! Abc: *

Převede předchozí příkaz a upraví jej

Bash také umožňuje znovu spustit předchozí příkaza specifikujte něco, co by mělo být změněno. To může být užitečné pro opravu překlepu v příkazu. Například následující příkaz znovu provede předchozí příkaz a nahrazuje text "abc" v něm s textem "xyz".

^ abc ^ xyz

Například, pokud jste náhodně spustili ping gogle.com, mohli byste spustit ^ gog ^ goog a bash spustil příkaz ping google.com.

Kde je uložena vaše historie a jak ji vymazat

Složka bash ukládá historii příkazů, které jste spustili do souboru historie uživatelského účtu ve výchozím nastavení ~ /. bash_history. Pokud je například vaše uživatelské jméno bob, tento soubor najdete na adrese /home/bob/. bash_history.

Protože je vaše historie uložena v souboru, přetrvává mezi relacemi. Můžete spustit některé příkazy, odhlásit se, vrátit se příští den a tyto příkazy budou stále ve vašem souboru historie připraveny k zobrazení a použití.Každý uživatelský účet má vlastní soubor historie se samostatnou historii příkazů.

Chcete-li vymazat historii bash, můžete spustit následující příkaz. Toto vymaže obsah souboru. bash_history vašeho uživatelského účtu: historie

-c

Bash si pamatuje pouze omezeně počet příkazů ve výchozím nastavení, čímž zabraňuje přílišnému zvětšování souboru historie. Počet záznamů historie, které se ukládají do paměti, je řízen systémem HISTSIZEvariable. Výchozí hodnota je obvykle 500 nebo 1000 položek. Pro zobrazení velikosti historie bash ve vašem systému můžete spustit následující příkaz.

echo $ HISTSIZE

Chcete-li nastavit historii na nulu, spusťte následující příkaz.

HISTSIZE = 0

Pro aktuální relaci nebude bash ukládat žádné záznamy historie, pokud nebude spuštěn příkaz jako HISTSIZE = 1000, aby byl nastaven zpět na určitý počet položek.

Jak ignorovat mezery a duplikáty

Bash umožňuje ignorovat záznamy historie, které začínají mezerou, pokud nastavíte hodnotu HISTCONTROLvariable na ignorespace.

HISTCONTROL = ignorespace

Před zadáním příkazu zadejte mezery před spuštěním v bash shellu a příkaz běží normálně, ale v historii se nezobrazí, pokud je tato proměnná povolena. To vám umožní udržet historii trochu čistší a zvolit si příkazy, aniž by se objevily ve vaší historii.

Bash také umožňuje ignorovat duplicitní příkazy, které mohou zablokovat vaši historii. Chcete-li tak učinit, nastavte HISTCONTROL ignoredups.

HISTCONTROL = ignoredups

Chcete-li použít funkci ignorespace i ignoredups, nastavte proměnnou HISTCONTROL na ignoreboth.

HISTCONTROL = ignoreboth

Všimněte si, že nastavené proměnné bash zůstanou pouze pro aktuální relaci. Budete je muset přidat do souboru. bashrc svého uživatelského účtu, aby tyto hodnoty byly automaticky nastaveny v každé relaci bash, kterou začnete, pokud to chcete.

Bash shell je složitý nástroj s mnoha možnostmi. Podrobnější informace a další pokročilé triky, které můžete použít, naleznete v sekci Bash History History a Expansion History v oficiálním manuálu.