Příkazový řádek, ačkoliv má za sebou téměř padesát let existence, rozhodně nepatří do starého železa. Textové terminály se i nadále ukazují jako efektivní nástroj pro mnoho úkolů, a to i v době, kdy dominují grafické desktopy a dotyková zařízení.
Ve skutečnosti se zdá, že význam příkazového řádku roste, a to zejména díky nové, robustní aplikaci Windows Terminal od Microsoftu. Prostředí PowerShell ve Windows 10 se ukazuje jako překvapivě schopné, nicméně snaha Microsoftu integrovat do Windows 10 plnohodnotnou podporu pro prostředí příkazového řádku Linuxu je nepopiratelná.
Příkazový řádek – dříve jediná možnost
V dřívějších dobách byl jediný způsob, jak komunikovat s počítačem, psaní. Nic víc neexistovalo. Ačkoliv to může znít omezující a zastaralé, ve srovnání s děrnými štítky nebo děrovanými páskami byl textový vstup radikálním a transformačním krokem. Přechod od dálnopisů s jejich papírovými rolemi k monitorům s katodovou trubicí představoval další zásadní posun v interakci mezi člověkem a počítačem.
Tento vývoj otevřel cestu pro interaktivní shell. Nyní bylo možné zadávat instrukce počítači a okamžitě dostávat odpovědi na obrazovku. Odpadlo tak otravné cvakání dálnopisů a čekání na papírový výstup.
To vše je sice hezké, ale to byla minulost. Současnost je zcela jiná. Kromě zjevných situací, kdy se používá počítač bez grafického prostředí, nebo když se pracuje se vzdáleným strojem přes SSH přes připojení s nízkou propustností, nebo když se jedná o ovládání bezhlavého nebo vestavěného systému, proč bychom měli upřednostňovat příkazový řádek před grafickým prostředím?
Vysvětlení terminologie
Pojmy jako příkazový řádek, okno terminálu a shell jsou někdy používány zaměnitelně. To je však nepřesné. Každý z těchto termínů označuje něco jiného, i když spolu úzce souvisí.
Terminálové okno je okno v grafickém desktopovém prostředí, které emuluje dálnopisný terminál.
Shell je program, který běží uvnitř terminálového okna. Přijímá uživatelský vstup, snaží se jej interpretovat a provést zadané instrukce, předává je dalším systémovým utilitám nebo vyhledává skript či program odpovídající zadanému příkazu.
Příkazový řádek je místo, kam se píše. Je to prompt, který shell zobrazí, když čeká na zadání instrukcí. Termín „příkazový řádek“ se také používá pro označení toho, co bylo skutečně napsáno. Pokud například s jiným uživatelem řešíte problém s programem, může se zeptat: „Jaký příkazový řádek jsi použil?“ Neptá se, jaký shell jste použili, ale jaký příkaz jste zadali.
Všechny tyto komponenty dohromady tvoří rozhraní příkazového řádku (CLI).
Proč používat příkazový řádek v roce 2024?
Pro někoho, kdo s ním nemá zkušenosti, může CLI působit retrográdně a matoucím způsobem. Opravdu má tak zastaralý a specifický způsob práce s počítačem stále své místo v moderním operačním systému? Neměli jsme se ho zbavit už dávno, když se objevila okna, ikony, myši a grafická uživatelská rozhraní (GUI)?
Je pravda, že GUI existuje již desítky let. První verze Microsoft Windows byla uvedena na trh již v roce 1985 a standardem se stala s příchodem Windows 3.0 v roce 1990.
Systém X Window, používaný v Unixu a Linuxu, byl představen v roce 1984. To přineslo grafické prostředí i do Unixu a jeho mnoha derivátů.
Nicméně Unix, ve své původní podobě, se objevil o více než deset let dříve. A jelikož neexistovala jiná možnost, vše se muselo ovládat pomocí příkazového řádku. Veškerá interakce s počítačem, konfigurace i samotné jeho použití bylo možné pouze prostřednictvím skromné klávesnice.
Z toho vyplývá, že příkazový řádek zvládne vše. GUI stále nedokáže to, co CLI. A i v případech, kdy GUI nějakou funkcionalitu nabízí, je CLI většinou rychlejší, flexibilnější, skriptovatelné a škálovatelné.
A navíc, je standardizované.
Standardizace díky POSIX
POSIX je standard pro operační systémy podobné Unixu, tedy v podstatě vše kromě Windows. Dokonce i Windows má Windows Subsystem for Linux (WSL). Otevřete terminálové okno v libovolném operačním systému kompatibilním s POSIX (nebo téměř kompatibilním) a ocitnete se v shellu. I když si shell nebo distribuce přidávají vlastní rozšíření a vylepšení, pokud poskytují základní funkce POSIX, budete je moci okamžitě používat a vaše skripty budou fungovat.
Příkazový řádek je nejmenší společný jmenovatel. Naučte se ho používat a bez ohledu na distribuci Linuxu nebo grafické prostředí budete schopni vykonávat veškeré potřebné úkoly. Různá desktopová prostředí mají své specifické způsoby práce. Různé distribuce Linuxu obsahují různé nástroje a programy.
Ale otevřete okno terminálu a budete se cítit jako doma.
Příkazy navrženy pro spolupráci
Každý z linuxových příkazů je navržen tak, aby dělal jednu konkrétní věc a dělal ji dobře. Základní myšlenkou je přidávat další funkce pomocí dalších nástrojů, které lze propojovat a řetězit s těmi stávajícími a dosahovat tak požadovaných výsledků.
Tato koncepce je tak výhodná, že Microsoft se snažil přidat do Windows 10 podporu pro celý příkazový řádek Linuxu!
Například příkaz sort se používá pro řazení textu abecedně. Není tedy potřeba zabudovávat schopnost řazení do všech ostatních příkazů Linuxu. Obecně GUI aplikace tento typ spolupráce neumožňují.
Podívejme se na následující příklad. Příkaz ls zobrazí seznam souborů v aktuálním adresáři. Výstup je následně přesměrován do příkazu sort, který seřadí výpis podle velikosti souboru (pátý sloupec). Seřazený seznam je poté přesměrován do příkazu head, který ve výchozím nastavení zobrazí prvních deset řádků svého vstupu.
ls -l | sort -nk5,5 | head
Získáme tak přehledný výpis deseti nejmenších souborů v aktuálním adresáři.
Jedinou změnou v příkazu – použitím tail místo head – získáme seznam deseti největších souborů v aktuálním adresáři.
ls -l | sort -nk5,5 | tail
Jak je vidět, výstup nám skutečně zobrazuje seznam deseti největších souborů.
Výstup příkazů je možné přesměrovat a uložit do souborů. Standardní výstup (stdout) a chybová hlášení (stderr) lze zachytávat samostatně.
Příkazy mohou pracovat s proměnnými prostředí. Následující příkaz zobrazí obsah vašeho domovského adresáře:
ls $HOME
Funguje to odkudkoliv ze stromové struktury adresářů.
Pokud vám představa psaní všech těchto příkazů stále nahání hrůzu, techniky jako doplňování pomocí klávesy Tab mohou snížit množství potřebného psaní.
Skripty pro automatizaci a opakovatelnost
Lidé dělají chyby.
Skripty umožňují standardizovat sadu instrukcí, o kterých víte, že budou pokaždé provedeny stejným způsobem. To zajišťuje konzistentnost údržby systému. Do skriptů lze zabudovat bezpečnostní kontroly, které jim umožní rozhodnout se, zda mají pokračovat, čímž se snižuje riziko, že uživatel udělá chybu kvůli nedostatku znalostí.
Díky možnosti automatizace úloh pomocí cronu v Linuxu a dalších unixových systémech, lze dlouhé, složité a opakující se úlohy zjednodušit, alespoň je jednou napsat a následně automatizovat.
PowerShell skripty nabízejí podobné možnosti ve Windows a jejich spouštění můžete naplánovat v Plánovači úloh. Proč klikat na 50 různých voleb pokaždé, když nastavujete počítač, když stačí spustit jediný příkaz, který vše provede automaticky?
To nejlepší z obou světů
Chcete-li skutečně využít potenciál Linuxu – nebo jakéhokoliv operačního systému – jako zkušený uživatel, je potřeba ovládat jak CLI, tak i GUI.
Pro používání aplikací je GUI nepřekonatelné. Dokonce i ti největší nadšenci příkazového řádku občas potřebují opustit terminál a používat kancelářské balíky, vývojová prostředí nebo grafické editory.
Zarytí uživatelé příkazového řádku GUI nezatracují. Pouze upřednostňují výhody CLI pro konkrétní úlohy. Pro správu systému je CLI vítězem. S pomocí CLI lze provádět změny na jednotlivých souborech, adresářích, vybraných souborech a adresářích, stejně jako globální změny se stejnou mírou úsilí. Pokus o totéž pomocí GUI často vyžaduje zdlouhavé a opakující se akce klávesnice a myši, zvláště když se jedná o větší množství objektů.
Příkazový řádek vám dává maximální kontrolu. Máte k dispozici každou volbu každého příkazu. A mnoho linuxových příkazů jich má opravdu hodně. Vezměte si například příkaz lsof. Podívejte se na jeho manuálovou stránku a zamyslete se nad tím, jak by se to dalo efektivně implementovat v GUI.
V efektivním GUI by se uživateli muselo zobrazovat příliš mnoho voleb. Používání by bylo komplikované, nepřehledné a neohrabané. A to je přesný opak toho, jak má GUI vypadat.
Každý má své silné stránky. Nepodceňujte sílu CLI. Často je to rychlejší a obratnější pomocník. Naučte se ho používat a nikdy toho nebudete litovat.