Tohle není učebnice — je to kuchařka. Máte problém, hledáte recept. Ke každé úloze jsou ukázány jak klasické unixové nástroje, které najdete na každém systému, tak i moderní alternativy, které si možná budete muset doinstalovat, ale práci vám výrazně zpříjemní.
… chci se podívat, co je v souboru¶
Klasika: cat, less, head, tail¶
Nejjednodušší je cat — celý soubor vypluje na terminál:
1 | |
Na velké soubory je lepší interaktivní prohlížeč less.
Pohybujete se šipkami, Space skočí o stránku dopředu, q ukončí,
/ spustí hledání:
1 | |
Jen začátek nebo konec souboru:
1 2 | |
Skvělé pro sledování průběžně rostoucího logu (přidává se na konec):
1 | |
Moderní: bat¶
Program bat je cat na steroidech: zvýrazní syntaxi, zobrazí čísla řádků
a ukáže i změny oproti Gitu. Automaticky spustí stránkovač, pokud se soubor
nevejde na obrazovku:
1 2 | |
… hledám soubor podle jména¶
Klasika: find¶
find prochází adresářový strom a hledá soubory
splňující zadaná kritéria:
1 2 3 4 | |
Výsledky lze rovnou předat dalšímu příkazu:
1 | |
Moderní: fd¶
fd je výrazně rychlejší, výchozí chování je rozumnější (respektuje
.gitignore, ignoruje skryté soubory), výstup je barevný a syntaxe příjemnější:
1 2 3 4 | |
… hledám soubor podle jeho obsahu¶
Klasika: grep¶
grep prohledá soubory a vypíše řádky odpovídající vzoru:
1 2 3 4 | |
Moderní: rg (ripgrep)¶
rg je několikanásobně rychlejší než grep, automaticky respektuje
.gitignore, výstup je přehledně barevný a výchozí chování dává smysl:
1 2 3 4 | |
… hledám, která složka zabírá nejvíc místa¶
Klasika: du + sort¶
du (disk usage) změří velikost adresářů.
Samotný výstup je ale chaotický — teprve v kombinaci se
sort to dává smysl:
1 2 3 | |
Moderní: dua, dust, ncdu¶
Interaktivní TUI nástroje ukáží stromovou strukturu a umožňují procházet adresáře podobně jako správce souborů.
ncdu je nejrozšířenější:
1 | |
dust dá okamžitý přehled bez interaktivity — výstup je graficky přehledný:
1 2 | |
… chci interaktivně vybrat soubor nebo příkaz¶
fzf — fuzzy finder¶
fzf je interaktivní fuzzy vyhledávač pro terminál. Dostane na vstup
seznam položek a umožní vám rychle vybrat jednu (nebo více) pomocí
napsání části hledaného výrazu. Hodí se všude:
Vybrat soubor a otevřít ho v editoru:
1 | |
Vyhledat v historii příkazů (integruje se i do Ctrl+R):
1 | |
Přejít do adresáře:
1 | |
Kombinace s fd:
1 | |
Po integraci fzf do shellu získáte:
Ctrl+R- fuzzy vyhledávání v historii příkazů
Ctrl+T- fuzzy výběr souborů přímo do příkazového řádku
Alt+C- interaktivní přechod do podadresáře
… chci seřadit a najít nejčastější položky¶
sort a uniq¶
Klasická kombinace pro analýzu textového výstupu:
1 2 3 | |
uniq odstraní nebo spočítá duplicitní řádky
(vstup musí být seřazený):
1 2 | |
Zlatá kombinace — zjistěte, co se v logu opakuje nejčastěji:
1 | |
… chci zobrazit strukturu adresáře¶
Klasika: tree¶
1 2 3 | |
Moderní: eza¶
eza je moderní náhrada za ls s barvami, ikonami a spoustou přehledných
voleb. Stromový výpis zvládne taky:
1 2 3 4 | |
… chci přejmenovat hromadu souborů najednou¶
rename¶
Příkaz rename provede přejmenování podle regulárního výrazu
(syntaxe se liší podle verze — Perlová varianta):
1 2 3 | |
Shell cyklus¶
Bez extra nástrojů zvládne přejmenování i prostý for cyklus:
1 2 | |
… chci sledovat průběh dlouhé operace¶
pv — pipe viewer¶
pv se vloží do roury a ukáže průběh (množství dat, rychlost, odhadovaný čas):
1 2 | |
Lze použít i pro kopírování:
1 | |
rsync --progress¶
rsync ukáže průběh přenosu a přidává možnost pokračovat po přerušení:
1 | |
… chci porovnat dva soubory¶
Klasika: diff¶
diff ukáže rozdíly řádek po řádku:
1 2 | |
Moderní: delta¶
delta je vizuálně výrazně přehlednější — zvýrazní syntaxi, zobrazí
čísla řádků, zarovná změny do sloupců. Použije se jako pager pro diff
nebo pro git diff:
1 | |
Po nastavení v ~/.gitconfig
automaticky vylepší i výstup git diff a git log.
… chci pracovat s textem v rouře¶
Pár oblíbených jednolinkovek, které ukazují sílu unixové filozofie:
Počet souborů v adresáři:
1 | |
Sečíst čísla ze souboru (každé číslo na jednom řádku):
1 | |
Vypsat unikátní IP adresy z logu (třetí sloupec):
1 | |
Najít 5 nejpoužívanějších příkazů z historie:
1 | |
Vytvořit seznam souborů a jejich velikostí seřazený od největšího:
1 | |
Kde hledat moderní nástroje¶
Většinu moderních nástrojů najdete v repozitářích vaší distribuce nebo je lze stáhnout jako statické binárky z jejich GitHub stránek.
Na Debianu/Ubuntu:
1 | |
Pozor: bat se na Debianu jmenuje batcat a fd se jmenuje fdfind
(kvůli jmennému konfliktu). Nejpohodlnější řešení je vytvořit aliasy:
1 2 | |
nebo symbolické odkazy v ~/.local/bin/.