Tučňákovo minimum Vojta Hanák
√
H
15. listopadu 2009 Abstrakt Tento článek je stručným minimem úvodu do práce s příkazovou řádkou operačního systému GNU/Linux s přihlédnutím k distribuci Ubuntu. Text jsem napsal pro kamarádku, která se rozhodla pro chov tučňáků na svém notebooku.
Obsah 1 Základní příkazy 1.1 Když se ztratím . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Pojednání o cestách . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 2 3
2 Pracujeme se soubory
4
3 Superuživatel
4
4 Když se něco pokazí
5
5 Fígle s příkazy
5
6 Jasnovidectví
6
7 Instalace programů 7.1 Kde získat radu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7
8 Různé blbinky
7
9 Závěr
8
1
Zvyklosti v tomto dokumentu Příkazy, které zadáváme do příkazové řádky jsou uváděny stojopisným fontem. Části příkazů, které si uživatel upravuje dle situace jsou navíc strojopisnou italikou . Není-li uvedeno výslovně jinak, interpunkce není součástí příkazu. Názvy programů jsou v textu vyznačeny Kapitálkami.
1
Základní příkazy
Příkazová řádka (Cli) může působit děsivě, ale jisté věci se v ní dělají velmi pohodlně a jiné ani jinak zařídit nelze. V podstatě většina Linuxových grafických rozhraní jen obaluje nějaké programy pro Cli. Cli rozlišuje malá a velká písmena, stejně jako mezery. Příkaz v linuxu může vypadat třeba takhle: ps -A|grep mpd Clelou konstrukci si postupně vysvětlíme. Prozatím jen to, že začíná programem ps který se spouští s parametrem (to je to mínus) A. Takových parametrů mohu napsat za mínusko i víc, třeba: tar -xvfz cosi.tar.gz Zbytek nás zatím netrápí. Nerozlišujme zatím mezi programy, procesy a příkazy. Vše se totiž v Cli volá stejně. Například program firefox se z Cli spustí zadáním příkazu: firefox Následuje přehled některých základních a/nebo užitečných programů a příkazů.
1.1
Když se ztratím
pwd vypíše aktuální cestu, tedy to, kde se nacházím. whoami vypíše, pod jakým jménem jsem přihlášený. ls vypíše obsah složky. ls -a vypíše obsah složky včetně skrytých souborů. ls -l vypíše obsah složky s doplňujícími informacemi, jedna položka na řádek. cd adresář mě přesune do zadaného adresáře. cd
mě přesune do mého domovského adresáře.
2
1.2
Pojednání o cestách
Cesta k souboru či adresáři se v Linuxu zadává trochu jinak, než ve M$ Woknows. Hlavní rozdíl je v naklonění lomítka. Linux používá lomítko normální. Typická absolutní cesta v linuxu vypadá takhle: /usr/share/icons/oxygen/48x48/apps/firefox.png Typická relativní cesta, tedy cesta od aktuálního umístění, v linuxu vypadá takhle: Hudba/Tysycaci/Lisakjelisak/lesvabi.mp3 Všimněte si prosím následující věci: nikde žádné C:\. Linux totiž nemá nic takového, jako disk C a někde na něm složku „Tento počítačÿ ve které by byl disk C a tak dokola. To, co vám vrní na stole nebo pod ním, celá ta železná krabice, je v linuxu to lomítko na začátku. „Tento počítačÿ se všemi důsledky toho názvu má tuto cestu: / Tomuto adresáři se říká root 1 , tedy kořen. V tomto adresáři se nachází vše ostatní. Najdeme tu mimořádně zajímavé adresáře. Některé si uveďme: /dev zde jsou coby jednotlivé soubory umístěna všechna zařízení, tedy hardware. Najdete zde disky, zvukovou kartu, tiskárny, monitor a podobné krámy. /etc obsahuje systémová nastavení, zde se hrabeme, když chceme zařídit něco důležitého, nebo když chceme svůj systém odeslat do věčných lovišť. /usr/share obsahuje data aplikací, které používají všechni uživatelé systému. Zde najdeme soubory ikonek, fonty a většinu výchozích konfigurací aplikací. Tato složka tu opět není od toho, abychom v ní něco měnili. /home obsahuje domovské složky uživatelů. Sem se ukládají naše osobní nastavení jednotlivých programů a sem si ukládáme svůj bordelánek. Já jsem uživatel vojta, takže můj domovský adresář má cestu /home/vojta a pokud jsem přihlášený mohu tuto cestu zapsat zkratkou ∼. Cety /home/vojta/Hudba a ∼/Hudba vedou tamtéž, pokud je napíšu já. Pokud by totéž napsal nějaký lump (s uživatelským účtem lump) bude ∼/Hudba znamenat /home/lump/Hudba. /media sem se připojují2 CD, DVD, USB klíčenky, externí disky, mobilní telefony, fotoaparáty a podobná zařízení (jinak tato zařízení taky najdeme jako soubory v adresáři /dev). V cestě můžeme také použít následující žolíky: . aktuální adresář. Používá se při spouštění skriptů (./skript.sh). .. nadřazený adresář. Jsem třeba v domovském adresáři jeníčka (/home/jenicek) a chci něco v domovském adresáři Mařenky (/home/marenka), pak mohu psát cestu ../marenka. ∼ můj domovský adresář. 1 2
Toto slovo se tu urřitě ještě objeví. O tomhle slově tu určitě ještě padne zmínka.
3
2
Pracujeme se soubory
Práce se soubory pomocí základních příkazů není v Cli žádná lahoda, ale někdy je dobré tyhle příkazy znát3 . touch soubor vytvoří soubor, pokud už existuje, pouze aktualizuje jeho datum narození. mkdir soubor vytvoří adresář. cp co kam zkopíruje „coÿ „kamÿ. mv co kam přesune „coÿ „kamÿ. rm co maže soubory a dělá to dobře. Tohle už v koši nenajdete. rmdir maže prázdné adresáře. mc program Midnight Comander pro práci se soubory s klasickým ∗ comander ovládáním. Musíte ho mít nainstalovaný.
3
Superuživatel
V Linuxu existuje jen jeden uživatel, který smí dělat cokoliv, proto se mu říká superuživatel. Jméno tohoto uživatele je root4 . Každý uživatel se na chvíli může rootem stát. Stačí k tomu znát jeho heslo. V Cli se mezi uživateli přepíná poměrně snadno, stačí k tomu příkaz: su následovaný jméneme uživatele, kterým se chci stát, tedy například: su marenka ve chvíli, kdy by se Mařenka chtěla stát Jeníčkem a na stromě vyhlížet světélko, napíše jen: su jenicek a všechno jakoby teď dělal Jeníček. Po zadání tohoto příkazu se systém zeptá na heslo zvoleného uživatele. Při zadávání tohoto hesla se nezobrazují žádné znaky, ale heslo se do systému normálně píše. Tohle je ochrana proti čumilům přes rameno. Až se budu chtít vrátit zpět do své kůže, zadám jednoduše příkaz exit. Mohu tedy zadat příkaz su root, zadat rootovo heslo a řádit dle libosti. Dokonce stačí zadat jen su bez jména uživatele. Ovšem takhle to nefunguje v distribuci Ubuntu. Ubuntu totiž nemá standardní rootovský účet. Místo toho dává každému uživateli5 možnost spouštět příkazy jako root. K tomu slouží program Sudo. Chci li provést třeba výpis obsahu aktuálního adresáře jako root, udělám to takhle: sudo ls Teď budu muset zadat své uživatelské heslo, abych systém přesvědčil, že jsem to opravdu já, a příkaz se provede s rootovými právy. Výpis složky asi není to, co bych jako sudo dělal nejčastěji, spíš se používá při spouštění serveru, instalaci programů a podobně. 3
Například když si jeden zmrší konfiguraci grafického prostředí tak, že mu toto prostředí vůbec nenaběhne a potřebuje v textovém režimu zkopírovat starý konfigurák ze zálohy. 4 A je to tu zase. Neplést s kořenovým adresářem, i když jistá symbolika v tom asi bude. 5 Tedy každému, kterému to povolí ten, který byl v systému úplně první.
4
4
Když se něco pokazí
Oblíbená situace z M$ Woknows je, že nějaký program zamrzne, systém nereaguje a co teď? V linuxu máme krásnou možnost, jak ze situace vybruslit. Máme-li k dispozici Cli, zjistíme, který proces nám to peče procesor. Procesy, které nejvíce vytěžují systém, zobrazuje příkaz top. Vidíme-li jeho výstup, musíme správně identifikovat škůdce6 a pak se ho zbavit. Ve výstupu programu top si všimneme sloupečku PID. Ten vypisuje čísla procesů. Zapamatujeme si PID našeho škůdce a Top ukončíme klávesou q. Nyní zadáme příkaz: kill # kde # zastupuje PID zjištěné škodné. Tento proces je neodkladně ukončen a my můžeme pracovat dál. K zabití grafické aplikace slouží program xkill, který je ovšem schopný při neopatrném kliknutí zabít třeba panel nebo i správce plochy. Pokud náhodou nemáme k dispozici nějakou Cli, stále jich máme k dispozici celých šest. V Linuxu jsou totiž vždy na pozadí spuštěné takzvané virtuální terminály. Do nich se dostaneme stiskem kláves: Ctrl Alt F1-F6 Zde nás uvítá hláška očekávající naše přihlášení. Zadáme tedy své uživatelské jméno a pak i heslo. No a máme příkazovou řádku. Z tohoto textového režimu se zpět do režimu grafického dostaneme stiskem kláves: Alt F7 Mezi jednotlivými virtuálními terminály můžeme jinak přepínat dle libosti, v každém být přihlášeni jako někdo jiný a třeba tam mít i spuštěné nějaké programy, ovšem jen v textovém režimu. Když se něco pokazí hodně, máme tu příkaz reboot -n, který okamžitě restartuje počítač. Je to příkaz, který musí volat superuživatel, takže celý zápis je: sudo reboot -n To n říká, že se to má udělat hned. Vypnutí se provede příkazem: sudo shutdown -h now To h říká, že se má po ukončení činnosti systému vypnout počítač. Místo now můžete napsat čas v minutách, za jak dlouho se tak má stát.
5
Fígle s příkazy
V úvodu jsem použil poměrně složitější konstrukci, teď je načase ji trochu rozkrýt. Stálo tam ps -A|grep mpd. Vysvětlím jednotlíve příkazy, patří totiž k těm užitečným. ps vypíše aktuálně běžící procesy spůštěné daným uživatelem v daném terminálu. ps -A vypíše úplně všechny běžící procesy. 6 V této části je nutné myslet, například xorg představuje běžící grafické prostředí, a když si ho pak zabijeme. . .
5
grep mpd vypisuje pouze ty řádky, na kterých se vyskytuje výraz mpd | takzvaná roura (pipe) předává vystup příkazu vlevo na vstup příkazu vpravo. Celá kostrukce tedy vypíše jen ty procesy, které obsahují výraz mpd, neboli zjistí, zda běží Mpd nebo něco s podobným názvem. Roura je mocný nástroj zejména v kombinaci s příkazy more a less Oba tyto příkazy zobrazí jen část výstupu, která se vejde na obrazovku, a čekají, až si uživatel řekne o další stránku. Příkaz ps -A|more mi tedy vypíše všechny procesy tak, že mi žádný neunikne. Pokud spustím nějaký program, běh tohoto programu mi sebere možnost dál psát do Cli. Pokud bych si takto například spouštěl Firefox, bylo by to mrzuté, proto se grafické aplikace z Cli spouštějí se znakem & (ampersand) na konci, tedy například firefox &. Ampersand způsobí, že se program spustí „na pozadíÿ a prompt příkazové řádky je připraven pro další uživatelský vstup. S ampersandem se taky spouští všechny programy volané po spuštění systému. V Cli taky samozřejmě existuje i možnost se mezi jednotlivými takto spuštěnými programy přesouvat, toto ale ponechám čtenáři jako cvičení. Zadáním dvou většítek za příkaz se zařídí, aby příkaz svůj výstup zapsal do souboru. Tedy například ps -A >> cobezi.txt vypíše všechny běžící procesy do souboru cobezi.txt. V Cli mohu také používat zástupné znaky, žolíky. Hvězdička ∗ zastupuje libovolnou skupinu znaků a otazník ? zastupuje jeden znak. Například konstrukce rm ∗.wma vymaže z aktuálního adresáře všechny soubory, jejichž název končí výrazem .wma.
6
Jasnovidectví
Prověřme nejprve možnosti Cli vidět do minulosti. Zkuste zadat nějaký příkaz, třeba ten na výpis aktuální cesty pwd. Teď stiskněte šipku nahoru. Hezké, že? Kurzorovými šipkami nahoru a dolů můžete procházet historií zadaných příkazů. Standardně si jich Cli pamatuje kolem stovky ale dá se nastavit i o dost vyšší číslo. Jak může Cli vidět do budoucnosti? Zkuste začít psát například nějakou cestu k souboru. Napiště třeba /usr/s a teď stiskněte tabulátor. Hezké, že? Cli, přesněji Bash umí doplňovat známé řetězce, třeba cesty nebo názvy příkazů. Když už máme vypsanou cestu /usr/share zkusme ji dopsat na /usr/share/f a teď stisknout tabulátor. Nic? Tak ještě jednou stisknout tabulátor. Objevilo se více možností? To je dobře. Adresářů v cestě /usr/share které začínají písmeném f7 je totíž víc. Bash vám tak ukáže, které připadají v úvahu a od vás čeká, že dopíšete nějaké znaky, aby byl jeho odhad jednoznačný, případně dopíše tu část, která jednoznáčná je a pro zbytek opět počká na upřesnění. Když už tohle umíte, zkuste se podívat, jak se do cesty v Cli zadávají mezery. Určitě máte někde ve své domovské složce adresář s mezerou v názvu, tak šup. V Cli se dá taky pohodlně kopírovat. Stačí označit text, který chcete kopírovat, a na požadovaném místě stisknout prostřední tlačítko myši8 . Nepoužívejte zkratku Ctrl C, ta totiž v Cli ukončuje běžící proces. Pro kopírování a vkládání se v textovém režimu používají zkratky Ctrl Insert pro kopírování a Shift Insert pro vkládání. 7 8
A velikost písmene zde hraje roli. To kolečko totiž funguje taky jako tlačítko, jen s ním nesmíte otočit.
6
7
Instalace programů
Instalovat programy může opět jenom superuživatel, takže následující příkazy musíme uvodit kouzelným slůvkem sudo. Programy se do Linuxu instalují z takzvaných repozitářů. Můžeme si to představit jako skladiště, kam vývojáři ukládají nachystané baličky pro danou distribuci. Balík z repozitáře, dejme tomu program Midnight comander nainstalujeme takto: sudo apt-get install mc Program Apt-get prohledá repozitáře a až najde balík mc, nainstaluje ho. Program Gimp se instaluje příkazem: sudo apt-get install gimp Pokud napíšete do Cli příkaz, který systém nezná, navrhne vám, ve kterých balíčcích existuje podobný příkaz, popřípadě vám poradí, abyste program doistalovali. Jinak na instalaci existuje samosebou i grafický program, Ubuntu používá program Synaptic spouštěný příkazem sudo synaptic.
7.1
Kde získat radu
Když si nainstalujete nový program, zpravidla moc nevíte, jak se s ním zachází. K tomu má Linux skvělé nástroje. man příkaz vypíše manuálovou stránku příkazu, existuje-li. info příkaz vypíše podrobnější nápovědu k příkazu, existuje-li. apropos příkaz vypíše stručné informace o příkazu. Pro uživatele Linuxu v potížích je velmi důležité seznámit se s možnostmi vyhledávacího serveru Google.
8
Různé blbinky
Zde ještě uvedu pár příkazů, které považuji za šikovné a pro které jsem byl líný vymýšlet sekci. Manuálové stránky těchto příkazů si jistě nastudujete sami. sudo eject vysune šuplík optické mechaniky. mount připojuje datová zařízení. Samostudiu doporučuji man mount a man fstab. umount odpojuje datová zařízení. Píše se to skutečně umount, tedy bez n. alsamixer ovládání hlasitosti pro Cli. date vypíše datum a čas. ln vytváří symbolické odkazy. alias umožňuje vytvářet zkratky pro často zadávané příkazy 7
joe textový editor. Je dobré se naučit alespoň s jedním textovým editorem pro Cli. cat vypíše obsah souboru. Fajn pro přesměrování výstupu. head vypíše začítek souboru. tail vypíše konec souboru. file určí, co je soubor zač9 . tilda příkazová řádka zjevující se na zavolání klávesou F1 shora.
9
Závěr
Linux je operační systém pro lidi, kteří nejsou líní číst a nebolí je přemýšlení. Doporučuji následující věci: 1. Najděte si podobné články na internetu. 2. Zajímavý je server http://www.root.cz. 3. Sledujte stránky své distribuce. 4. Pravidelně aktualizujte z prověřených repozitářů. 5. Veďte si záznamy o změnách, které jste se systémem prováděli. Pište si i nové objevy. 6. Zálohujte. Data jsou pouze dvojího druhu: ta zálohovaná a ta, o která příjdete. 7. Přečtěte si nějaké články o technice kladení dotazů. 8. Nebojte se zkoušet. 9. Pokud něco provádíte jako root nebo pomocí sudo, buďte si opravdu jistí, že víte, co děláte. 10. Ptejte se. 11. Nemyslete si, že jste první, kdo má nějaký problém. S největší pravděpodobností ho už někdo řešil10 před vámi. Na závěr bych asi měl nějak shrnout, jak na Linuxu funguji já. Ve chvíli, kdy tento článek píšu, pracuji s Linuxem více než dva roky. Za tu dobu jsem vystřídal šest různých distribucí11 , přičemž v současnosti používám Ubuntu. Vystřídal jsem větší množstvní grafických prostředí a správců oken12 , v současnosti používám Fluxbox. Web prohlížím Operou, kreslím v Gimpu a Xarou, texty píšu LATEXem a video prěhrávám ve VLC a SMPlayeru. Hudbu přehrávám v příkazové řádce a svůj systém ovládám převážně pomocí klávesnice. Tato konfigurace představuje jednu z možných cest, nikoliv však jedinou, jak nám občas různí lidé tvrdí. 9
V linuxu totiž nemusíte mít u souborů přípony. A vyřešil. 11 Různou dobu jsem používal OpenSuSE, Debian, Slackware, Fedoru, Mandrivu a Ubuntu 12 Gnome, KDE 3, KDE 4, Enlightenment 16, Enlightenment DR17, Fluxbox, Blackbox, Openbox, XFCE, IceWM, PekWM, FVWM, Window maker a Compiz + Emerald 10
8