Příkazový řádek Linuxu - Terminál, stejně jako všechny skořápky, uchovává historii příkazů prováděných v minulosti uživatelem. Tato historie je trvalá a zůstává v paměti, i když restartujeme náš systém. Tyto uložené příkazy můžeme vyvolat a znovu použít nejoptimálnějším způsobem, jak efektivně využívat funkci ukládání historie většiny skořápek.
Linuxový bash je dodáván s velmi výkonným příkazem zvaným „historie“. Tento příkaz je integrovaný příkaz bash, který se používá k extrakci informací o historii příkazů, které byly spuštěny uživateli systému Linux ve všech předchozích relacích. V tomto kurzu vám umožníme, abyste ze své historie prostředí získali to nejlepší, když se naučíte správné použití příkazu historie. Linux ukládá historii příkazů pro určitého uživatele do souboru ~ /.bash_history ve výchozím nastavení.
Ke spuštění příkazů uvedených v tomto kurzu použijeme aplikaci Terminal v systému Linux.
Zobrazení celé historie
Uživatel může zobrazit celou historii svých příkazů prostředí ze souboru historie uloženého výhradně pro daného uživatele pomocí následujícího jednoduchého příkazu:
$ historie
Historie se vytiskne na obrazovku v následujícím výchozím formátu:
Na výše uvedeném obrázku vidíte seznam všech příkazů s číslem přiřazeným každému z nich. Příkaz číslo 1 odpovídá prvnímu spuštěnému příkazu a poslední očíslovaný příkaz představuje nejnovější příkaz, který jste provedli.
Pokud jste od použití bash spouštěli spoustu příkazů, zjistíte, že zde budou zobrazeny stovky a dokonce tisíce těchto příkazů. Chcete-li získat přístup k několika relevantním příkazům, můžete filtrovat výsledky zobrazené funkcí historie. Příkaz historie můžete také přizpůsobit tak, aby pro vás zobrazoval konkrétní počet příkazů.
Filtrování výstupu historie
Chcete-li filtrovat výstup historie na základě konkrétního klíčového slova, které jste mohli použít v předchozích příkazech, můžete použít příkaz historie následujícím způsobem:
$ historie | grep [klíčové slovo]
Příklad: V tomto příkladu chci zobrazit pouze příkazy ping, které jsem kdy spustil v shellu. Proto použiji následující příkaz:
$ historie | grep ping
Vidíte, že můj výstup nyní zobrazuje pouze příkazy včetně mého vyhledávacího klíčového slova „ping“ Reklama
Zobrazení počtu posledních příkazů
Můžete také zobrazit konkrétní počet příkazů, například:
- N počet posledních příkazů
NEBO
- N počet nejstarších příkazů
N Počet posledních příkazů
Konkrétní počet naposledy spuštěných příkazů můžete zobrazit pomocí následujícího příkazu:
$ historie | ocas -n
Příklad:
V tomto příkladu chci zobrazit poslední 3 příkazy, které jsem spustil, s klíčovým slovem 'ping':
$ historie | grep ping | ocas -3
Výstup zobrazuje pouze 3 poslední příkazy ping namísto celé historie
N Počet nejstarších příkazů
Konkrétní počet nejstarších příkazů pro spuštění můžete zobrazit pomocí následujícího příkazu:
$ historie | hlava -n
Příklad:
V tomto příkladu chci zobrazit nejstarší 3 příkazy, které jsem spustil, s klíčovým slovem 'ping':
$ historie | grep ping | hlava -3
Výstup zobrazuje pouze 3 nejstarší příkazy ping namísto celé historie
Seznam všech příkazů s datem a časovým razítkem
Chcete-li zobrazit historii příkazů spolu s datem a časovým razítkem, použijte následující příkaz pro export:
$ export HISTTIMEFORMAT = "% F,% T"
Nyní, když chcete zobrazit historii, stačí spustit příkaz historie a zobrazit výstup v následujícím formátu:
Pamatujte, že tato změna formátu je dočasná a po ukončení relace se obnoví na předchozí standard.
Navigace v příkazech z historie
Když jste na příkazovém řádku, můžete procházet dříve spuštěnými příkazy a také vyvolat některé nedávno použité příkazy zadáním klíčového slova.
Procházení příkazy
K procházení příkazy historie můžete použít následující ovládací prvky klávesnice
Šipka nahoru / Ctrl + P | Pomocí těchto ovládacích prvků můžete zobrazit předchozí příkaz, který jste použili. Tyto ovládací prvky můžete stisknout několikrát a vrátit se ke konkrétnímu příkazu v historii. |
Šipka dolů / Ctrl + N | Pomocí těchto ovládacích prvků můžete zobrazit další použitý příkaz. Tyto ovládací prvky můžete stisknout několikrát a přejít tak na konkrétní příkaz v historii. |
Alt + R | Pokud upravujete příkaz, který jste vytáhli z historie, na aktuálním řádku, můžete pomocí tohoto ovládacího prvku jej vrátit k původnímu příkazu. |
Vyvolávání příkazů
Pomocí následujících ovládacích prvků můžete vyvolat, spustit nebo se rozhodnout nespustit konkrétní příkaz z historie:
Ctrl + R | Pomocí tohoto ovládacího prvku můžete vyvolat příkaz z historie zadáním vyhledávacího řetězce. |
Ctrl + O | Pomocí tohoto ovládacího prvku můžete spustit příkaz, který jste vyvolali, pomocí Ctrl + R |
Ctrl + G | Pomocí tohoto ovládacího prvku můžete ukončit historii bez spuštění příkazu, který jste vyvolali, pomocí Ctrl + R |
Příklad:
V tomto příkladu jsem stiskl ctrl + R a poté zadal vyhledávací řetězec 'ar'. Historie zobrazila příkaz 'arch'.
Když jsem spustil příkaz 'arch' stisknutím ctrl + O, zobrazil architekturu CPU mého systému:
Využití historie Bash
Skutečným kouzlem historie bash je použití různých příkazů a přizpůsobení samotného příkazu history, aby se funkce historie co nejlépe využila:
Spouštění příkazů z historie
- Jak jsme viděli dříve, příkaz historie zobrazuje příkazy tak, že ke každému přidruží číslo. Pomocí následujícího příkazu můžete spustit určitý příkaz z historie na základě jeho počtu:
$ !#
Příklad:
Zde spouštím příkaz číslo 95 z mé historie:
$ !95
Výstup zobrazuje výsledek 'lscpu', který byl uveden jako příkaz číslo 95 v mé historii bash. Tento příkaz zobrazí specifikace mého CPU a operačního systému.
- Předchozí příkaz můžete znovu spustit pomocí následujícího příkazu:
$ !!
Příklad:
Zde vidíte, že jsem spustil příkaz 'arch'. Spuštěním výše uvedeného příkazu můžu znovu spustit příkaz 'arch' a zobrazit architekturu CPU takto:
- Chcete-li vyhledat příkaz z historie a poté jej spustit, použijte následující příkaz:
$ ![klíčové slovo]
Příklad:
Následující příkaz použiji k opětovnému spuštění posledního příkazu s klíčovým slovem 'dconf':
$ !dconf
Na následujícím obrázku můžete znovu potvrdit, že to byl poslední příkaz dconf, který jsem spustil.
Použití argumentů z předchozích příkazů
Linux bash umožňuje spustit nový příkaz pomocí argumentů z předchozího příkazu. Je obzvláště užitečné, když se chcete vyhnout přepisování dlouhých nebo komplikovaných argumentů. K tomuto účelu můžete použít následující příkaz:
Pomocí posledního argumentu z předchozího příkazu
$ [Příkaz] !$
Proměnná !$ má v sobě uložený poslední argument z předchozího příkazu.
Příklad:
V tomto příkladu vytvořím soubor s dlouhým názvem.
Nano [longnameOfaFile]
Poté jej zkopíruji na jiné místo tím, že se vyhnu opětovnému zadání dlouhého názvu takto:
Str !$ [cílová složka]
Vidíte, že jsem byl schopen zkopírovat soubor bez přepsání názvu souboru pomocí proměnné !$
Pomocí prvního argumentu z předchozího příkazu
Někdy je v aktuálním užitečný pouze první argument z předchozího příkazu.
V takovém případě můžete použít následující příkaz:
$ [příkaz] !^
Příklad:
V následujícím příkladu jsem spustil příkaz ping zadáním názvu hostitele a počtu jako argumentů. Nyní chci ve svém novém příkazu použít název hostitele (první argument) namísto 2 (poslední argument). K tomuto účelu použiji následující příkaz:
$ ping !^
Pomocí všech argumentů z předchozího příkazu
Všechny argumenty z předchozího příkazu můžete také použít pomocí následujícího příkazu:
$ !*
Pomocí jednoho argumentu z příkazu historie
Příkazy z historie můžete také použít opětovným použitím jejich argumentů. K tomu použijte následující příkaz:
$ [příkaz] ![klíčové slovo]: #
Příklad:
$ echo !str: 2
Tento příkaz bude mít následující parametry:
příkaz: echo
Klíčové slovo: cp
#: 2 (druhý argument příkazu)
Následující výstup ukazuje 2. argument posledního příkazu cp, který jsem spustil:
Použití všech argumentů z příkazu historie
Následující příkaz uloží všechny argumenty z prohledávané historie a použije je v aktuálním příkazu:
$ příkaz ![klíčové slovo]: *
Příklad:
V následujícím příkazu vytisknu všechny argumenty posledního příkazu cp pomocí příkazu echo takto:
$ echo ![cp]: *
Úpravy a spouštění předchozích příkazů
Pokud jste zadali nesprávný příkaz nebo chcete příkaz spustit znovu změnou textu v něm; toto je způsob, jak to udělat:
$ ^ [předchozí text] ^ [nový text]
Příklad:
Napsal jsem příkaz 'grep' jako 'gep' a nyní chci spustit příkaz opravou textu:
$ ^ gep ^ grep
Nyní vidíte, že můj opravený příkaz bude fungovat správně následujícím způsobem:
Vymazání historie
Chcete-li vymazat historii bash, použijte následující příkaz:
$ historie -c
Tento příkaz vymaže vaši historii a odebere veškerý obsah ze souboru ~ /.bash_history
V tomto tutoriálu jsme se naučili, že zatímco tisk celého obsahu historie nemusí být tak užitečný, optimalizace výstupu pomocí naučených příkazů je skutečným měničem hry. Cvičení spolu s tímto článkem vám umožní zobrazit přesné příkazy, které chcete, znovu spustit a znovu použít tyto příkazy a také použít argumenty z dříve spuštěných příkazů k optimalizaci nových.