Jak trávím stále více času v terminálových relacích, mám pocit, že neustále nacházím nové příkazy, které zefektivňují mé každodenní úkoly. historie
GNU příkaz je ten, který opravdu změnil můj pracovní den.
historie
GNU příkaz uchovává seznam všech ostatních příkazů, které byly spuštěny z dané relace terminálu, a umožňuje vám přehrát nebo znovu použít tyto příkazy namísto jejich přepisování. Pokud jste zkušený uživatel terminálu, víte o síle historie
, ale pro nás dabéry nebo nové správce systému historie
je okamžitý nárůst produktivity.
Za prvé, historie
příkaz ve skutečnosti není příkaz. Můžete se o tom přesvědčit sami, když ve svém systému vyhledáte příkaz:
$ which history
which: no history in (/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin)
Váš počítač nemůže najít historii
command, protože je to vestavěné klíčové slovo vašeho shellu. Protože je zapsána do shellu, který používáte, mohou existovat určité rozdíly v chování historie v závislosti na tom, zda používáte Bash, tcsh, Zsh, dash, fish, ksh a tak dále. Tento článek je založen na implementaci historie Bash, takže některé funkce nemusí fungovat v jiných prostředích. Většina základních funkcí je však stejná.
Historie 101
Chcete-li zobrazit historii
v akci otevřete terminálový program v instalaci Linuxu a zadejte:
$ history
Zde je odpověď, kterou jsem dostal:
1 clear
2 ls -al
3 sudo dnf update -y
4 history
historie
příkaz zobrazuje seznam příkazů zadaných od zahájení relace. Radost z historie
je, že nyní můžete přehrát kteroukoli z nich pomocí příkazu jako:
$ !3
!3
příkaz ve výzvě říká shellu, aby znovu spustil příkaz na řádku 3 seznamu historie. K tomuto příkazu bych také mohl přistupovat zadáním:
$ !sudo dnf
Tím se zobrazí výzva historie
k vyhledání posledního příkazu, který odpovídá zadanému vzoru (v tomto případě je tento vzor dnf ) a spusťte jej.
Historie vyhledávání
Můžete také použít historii
pro opětovné spuštění posledního zadaného příkazu zadáním !!
. Spárováním s grep
, můžete vyhledávat příkazy, které odpovídají textovému vzoru, nebo jeho pomocí s tail
, můžete najít několik posledních příkazů, které jste provedli. Například:
$ history | grep dnf
3 sudo dnf update -y
5 history | grep dnf
$ history | tail -n 3
4 history
5 history | grep dnf
6 history | tail -n 3
Další způsob, jak se dostat k této vyhledávací funkci, je zadáním Ctrl-R
k vyvolání rekurzivního prohledávání historie vašich příkazů. Po tomto zadání se výzva změní na:
(reverse-i-search)`':
Nyní můžete začít psát příkaz a odpovídající příkazy se zobrazí, abyste je mohli provést stisknutím Return nebo Enter .
Změna provedeného příkazu
Můžete také použít historii
znovu spustit příkaz s jinou syntaxí. Historii můžete upravit pomocí historie
. Pokud například chci změnit svůj předchozí příkaz historie | grep dnf
do historie | grep ssh
, mohu na výzvu provést následující:
$ ^dnf^ssh^
Příkaz se spustí znovu, ale s dnf
nahrazeno ssh
. Jinými slovy, tento příkaz se spustí:
$ history | grep ssh
Odebírání historie
Může nastat chvíle, kdy budete chtít odstranit některé nebo všechny příkazy ze souboru historie. Pokud chcete odstranit konkrétní příkaz, zadejte historie -d <číslo řádku> . Chcete-li vymazat celý obsah souboru historie, spusťte
history -c
.
Soubor historie je uložen v souboru, který můžete také upravit. Uživatelé prostředí Bash jej najdou ve svém domovském adresáři jako .bash_history
.
Další kroky
S historií
můžete dělat řadu dalších věcí :
- Nastavte velikost vyrovnávací paměti historie na určitý počet příkazů
- Zaznamenejte datum a čas každého řádku v historii
- Zabránit zaznamenání určitých příkazů do historie
Další informace o historii
příkaz a další zajímavé věci, které s ním můžete dělat, podívejte se na články Setha Kenlona o historii analýzy, modifikátorech vyhledávání historie a GNU Bash Manual.
Tento článek byl původně publikován v červnu 2018 a editor ho aktualizoval o další informace.