GNU/Linux >> Znalost Linux >  >> Linux

Úspěšně zachraňte den pomocí příkazů historie Bash

Cítili jste nějak, že jste spustili příkazy, které jste neměli? Pokazili věci a nechali vás zmatenými z toho, co se stalo? S příkazy historie Bash si ušetříte starosti s hledáním toho, co se stalo, a ušetříte čas opakováním složitých příkazů.

Nejste čtenář? Podívejte se na tento související video tutoriál! Nevidíte video? Ujistěte se, že máte vypnutý blokovač reklam.

V tomto tutoriálu se naučíte některé z nejužitečnějších příkazů historie Bash a nikdy neztratíte přehled o provádění vašich příkazů.

Čtěte dál a nechte historii Bash zachránit situaci!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující.

  • Počítač Linux – Tento výukový program používá Ubuntu 20.04, ale bude fungovat jakákoli distribuce Linuxu.
  • Uživatelský účet s oprávněními root.

Zobrazení historie Bash

Většina distribucí Linuxu používá Bash jako výchozí shell. Stejně jako ostatní prostředí prostředí Bash uchovává záznamy o příkazech, které jste dříve provedli. Tento záznam je uchováván a udržován v souboru s názvem ~/.bash_history i když restartujete systém.

Jak se ale díváte na historii Bash? Spuštěním history příkaz samostatně nebo propojený s jiným příkazem.

1. Spusťte history příkaz níže pro zobrazení historie příkazů.

history

Níže můžete vidět celý seznam příkazů provedených uživatelem root v aktuální relaci shellu. Ve výchozím nastavení se příkazy zobrazují v seznamu od nejstaršího po nejnovější (shora dolů).

Níže uvedený výstup zobrazuje pouze malý fragment celého souboru historie. V mnoha případech získáte tisíce historických řádků a budete mít problém v nich procházet. Ale čtěte dál a v následujících krocích se naučíte přizpůsobit výstup požadovaným způsobem.

2. Dále spusťte history příkaz níže pro zobrazení posledních 10 příkazy zaznamenané v historii Bash. Nahraďte 10 s počtem řádků, které chcete zobrazit.

history 10

Jak můžete vidět níže, výstup je mnohem lépe ovladatelný.

3. Nakonec spusťte následující příkaz sdružený s head příkaz k zobrazení pouze prvních deseti (nejstarších) příkazů provedených uživatelem root v aktuální relaci.

Stejně jako ve druhém kroku nahraďte 10 počtem řádků, které chcete zobrazit.

history 10 | head

Jak je ukázáno níže, zobrazení nejstarších příkazů je užitečné při kontrole příkazů, které byly provedeny na začátku relace.

Zobrazení Bash historie příkazů podle data a času

history příkaz je užitečný, ale neukazuje vám datum a čas, kdy jste příkazy provedli. Informace o datu a čase mohou být užitečné při odstraňování problémů nebo hledání příčiny problému.

Naštěstí můžete tyto informace získat nastavením formátu data a času historie Bash v HISTTIMEFORMAT proměnná.

Spuštěním níže uvedeného příkazu nastavte datum (%F ) a čas (%T ) formát historie Bash, kde:

  • %F možnost je pro celé datum zobrazené ve formátu rok-měsíc-den.
  • %T volba je pro čas zobrazený ve formátu hodina:minuta:sekunda (24 hodin). Pamatujte, že za %T budete muset přidat mezeru možnost oddělit jej od příkazů.
HISTTIMEFORMAT='%F, %T '

Můžete použít libovolnou kombinaci možností formátu. Pokud například chcete zobrazit pouze čas spuštění příkazů, použijte %T . Nebo použijte %F možnost Pokud chcete místo toho zobrazit pouze datum.

Nyní spusťte history k zobrazení historie Bash.

history

Jak můžete vidět níže, výstup nyní obsahuje datum a čas, kdy byly příkazy provedeny.

Prohledávání historie Bash

Viděli jste, jak zobrazit historii Bash a ovládat počet příkazů k zobrazení. Ale co když chcete najít konkrétní příkaz ve své historii Bash a nepamatujete si, co přesně to bylo? Propojení dalších příkazů, jako je grep , na history příkaz udělá trik.

Spusťte níže uvedený příkaz a shromážděte (grep ) každý řádek příkazů v historii Bash, který obsahuje ls text a vytiskněte posledních pět (5 ) příkazy. -i volba říká grep ignorovat velká a malá písmena na každém řádku příkazu.

Nezapomeňte nahradit ls se slovem nebo frází, kterou chcete vyhledat.

Příkaz grep ve výchozím nastavení zpracovává rozlišování velkých a malých písmen a ukazuje rozdíl mezi velikostí písmen v souboru. Pokud například hledáte „ls“, uvidíte příkazy s „ls“, ale nikoli „LS“ ani „Ls.“

history 5 | grep -i ls

Níže můžete vidět, že posledních pět příkazů s „ls“ je zobrazeno bez ohledu na velikost písmen.

Provádění příkazů z Bash History pomocí Event Designators

Už víte, jak zobrazit příkazy z historie Bash v různých výstupech. Věděli jste ale, že můžete také spouštět příkazy z historie Bash, aniž byste museli vše přepisovat?

Tato funkce šetří čas, když stejné příkazy spouštíte vícekrát pomocí označovačů událostí. Označení událostí vám umožňují odkazovat na příkaz podle jeho pozice v seznamu historie a jsou užitečné při opakovaném spouštění složitých příkazů.

Chcete-li provést příkaz z historie Bash, napíšete vykřičník (! ) následované číslem příkazu, který se má provést.

1. Prohlédněte si historii Bash pomocí metod, které jste se dosud naučili. Ale tutoriál běží na history příkaz bez voleb nebo zřetězených příkazů.

history

Čísla v levém sloupci ve výstupu níže jsou čísla historie příkazů nazývaná označovače událostí.

Poznamenejte si číslo příkazu, který chcete znovu spustit z historie Bash, v tomto případě příkazu apt install sudo.

2. Dále spusťte následující příkaz pro provedení 11. (!11 ) z vaší historie Bash

!11

Níže můžete vidět, že příkaz apt install sudo spustíte spuštěním příkazu !11.

Možná chcete příkaz nasucho spustit, než jej skutečně spustíte. Pokud ano, přidejte volbu :p k libovolnému z vašich cílových příkazů, jak je ukázáno níže. Tato možnost je užitečná, pokud nechcete věci zkazit, když znovu spustíte příkaz.

!11:p

Upozornění pod příkazem !11:p vytiskne cílový příkaz z historie Bash bez jeho spuštění.

3. Spusťte následující příkaz (!! ), pokud možná chcete provést poslední příkaz v historii Bash. Tento příkaz je užitečný, když omylem ukončíte příkaz nebo zapomenete spustit příkaz s sudo privilegia.

!!

Můžete vidět níže!! příkaz spustí poslední příkaz v historii Bash, příkaz history 5.

4. Nyní spusťte níže uvedený příkaz a znovu spusťte příkaz s předřazeným sudo, možná touch příkaz z historie Bash. Pokud jste zapomněli přidat sudo v předchozím příkazu je tato funkce užitečná, pokud používáte uživatele bez oprávnění root.

sudo !!

5. Nakonec spusťte níže uvedené příkazy a nastavte příkaz ping jako poslední příkaz a znovu spusťte poslední příkaz v historii Bash zadáním názvu příkazu.

Tato funkce je užitečná, pokud si pamatujete začátek názvu příkazu, takže nemusíte prohlížet a prohledávat historii Bash.

# Ping google.com
ping google.com
# Rerun the specified command (ping)
!ping

Níže můžete vidět, že příkaz !ping najde nejnovější příkaz, který začíná příkazem ping, a znovu jej spustí.

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

Opakované spouštění příkazů z historie bez přepisování je zábavné, že? Ale co když chcete spouštět nový příkaz při použití argumentů jiného příkazu? V tomto případě pomocí !$ event designator se hodí k označení posledního argumentu předchozího příkazu.

Stejně jako v předchozích příkladech !$ umožňuje znovu použít dlouhé nebo složité argumenty, aniž byste je museli přepisovat. Například vytvoříte nový soubor s dlouhou cestou a názvem souboru a chcete použít stejný název pro jiný soubor. Nemusíte to tedy psát znovu. Můžete to provést zadáním následujícího příkazu.

Spuštěním níže uvedených příkazů vytvořte soubor s dlouhou cestou a názvem souboru a otevřete soubor v textovém editoru bez přepisování celé cesty k souboru.

# Creates a file called this_is_a_long_file_name
touch /home/ata/Documents/this_is_a_long_file_name
# Expand to the last command's arguments and 
# opens the this_is_a_long_file_name file in a text editor
nano !$

Jak můžete vidět níže, pomocí !$ event designator vám ušetří spoustu času opakováním příkazů se zdlouhavými nebo komplikovanými argumenty.

Závěr

V tomto článku jste se naučili, jak používat příkazy historie Bash, abyste ušetřili čas a zvýšili produktivitu. V tomto okamžiku již víte, jak zobrazit určitý počet příkazů, vyhledávat konkrétní příkazy, znovu spouštět příkazy a znovu používat argumenty z vaší historie Bash.

Tyto dovednosti se vám budou hodit při práci na příkazovém řádku. Proč se tedy nenaučit klávesové zkratky Bash, abyste si tyto dovednosti vybudovali a zvýšili svou produktivitu v prostředí příkazového řádku?


Linux
  1. Propojené příkazy s ovládacími operátory v Bash

  2. Bash tipy pro každý den na příkazovém řádku

  3. Použití slovních modifikátorů s historií Bash v Linuxu

  1. Rozumíte vykřičníku (!) v Bash?

  2. 15 užitečných vestavěných příkazů Bash Shell (s příklady)

  3. Pomocí historie bash získáte předchozí příkaz, zkopírujte jej a poté jej „spusťte“, ale s komentářem příkazu

  1. Sledujte příkazy a úkoly pomocí příkazu watch v systému Linux

  2. Udělejte z historie Bash užitečnější pomocí těchto tipů

  3. '&&' vs. '&' s příkazem 'test' v Bash