Terminál používám denně již mnoho let. Používám silně přizpůsobený, nevýchozí shell. Široce využívám doplňování karet a zapamatoval jsem si příznaky mnoha příkazů. Ještě před rokem jsem si myslel, že jsem dosáhl vrcholu produktivity terminálu. Pak jsem objevil vlnu obslužných programů shellu, které, i když byly nejasné, zásadně změnily způsob, jakým komunikuji s prostředím svého terminálu, k lepšímu.
Tento článek je prvním ze série o těchto nových nástrojích (plus několik nástrojů, které znám déle a které mám rád). Dnes se podíváme na nástroje speciálně pro pohyb ve vašem souborovém systému.
Přeskočení:z
Víte, jak můžete do prohlížeče zadat několik prvních písmen běžně používaného webu a stisknout Enter s jistotou, že budete přesměrováni na správné místo? Co kdybychom přinesli stejnou zkušenost do vaší ulity? Představte si, že byste se mohli teleportovat do běžně používaného adresáře pouhým zadáním malé části jeho názvu. To je to, co z
ano.
z
shell skript sleduje adresáře, které navštívíte a kdy jste je navštívili. Kombinuje frekvenci vašeho přístupu k adresáři s aktuálností vašeho přístupu a určuje „frekvenci“ vašeho přístupu. Když zadáte několik písmen pro název adresáře, z
vybere kandidáta obsahujícího zadaný podřetězec s nejvyšší frekvencí. Výsledek je správný až děsivě často.
Tady je v akci:
Rychlá fakta:
bash
/zsh
implementace:GitHubfish
implementace:GitHub- Licence (
bash
/zsh
):WTFPLv2 - Licence (
fish
):MIT - Jazyk:Shell skript
Existuje celá řada podobných nástrojů, jako je autojump
a fasd
. Vyzkoušejte je všechny!
Fuzzy hledání:fzf
Někdy je hledání věcí s regulárními výrazy přehnané. Jsou chvíle, kdy by mělo stačit, aby se správná písmena vyskytovala ve správném pořadí. fzf
utilita umožňuje bezbolestně vyhledávat fuzzy shody. Jak tento nástroj souvisí s pohybem ve vašem souborovém systému? Počkejte a uvidíte.
Ve výchozím nastavení fzf
funguje na stdin, takže jej můžete použít jako grep
:
$ fzf < long-log-file.txt
Živý příklad:
Protože fzf
pracuje na filtrování stdin a odesílá výstup na stdout, můžete s tímto nástrojem udělat mnohem víc než prohledávat soubory. Chcete vyhledat adresář pod aktuálním?
$ fzf
To je správně. Pokud stdin není roura, fzf
prohledá všechny soubory pod tím a zobrazí vaši volbu na stdout, což usnadňuje kombinování výsledků s jinými příkazy, jako je editor.
Pokud byste chtěli dosáhnout stejné věci s větší kontrolou, můžete spustit:
$ find . -type d | fzf
Můžete použít fzf
pohybovat se běháním:
$ cd $(find . -type d | fzf) #bash/zsh
$ cd (find . -type d | fzf) #fish
Nyní existují i další zábavné aplikace. Můžete:
- Vyvolání příkazů z historie pomocí:
$ eval $(history | fzf) #bash/zsh $ eval (history | fzf) #fish
- Upravte soubor pod aktuálním adresářem pomocí:
$ $EDITOR $(find . | fzf) #bash/zsh $ $EDITOR (find . | fzf) #fish
- Vyberte balíčky k instalaci pomocí:
$ sudo apt install $(apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | sed 's|([^/]+)/.*|\1|' | fzf) #bash/zsh $ sudo apt install (apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | string split / | fzf) #fish
- Vybírejte obecně na základě libovolného textu odděleného řádky. Obloha je limit!
fzf
nástroj má existující integrace s bash
, zsh
a fish
. Pokud tyto shelly nainstalujete, fzf
přirozeně rozšiřuje a rozšiřuje pracovní postupy, jako je „obrácené indexové vyhledávání“ a dokončování karet. Jsem častým uživatelem fish
integrace, já sám.
Rychlá fakta:
- Získejte
fzf
:GitHub - Licence:MIT
- Jazyk:Přejít
Chcete více?
Pokud se vám tyto nástroje zdají užitečné, zůstaňte naladěni na další články. Pokud se nemůžete dočkat, tato série je založena na této přednášce, kterou jsem přednesl na All Things Open 2019. Najdete tam další nástroje a triky.