Unixové systémy – cvičení

Cvičení 1


První cvičení probíhá ještě v MS Windows, na učebně nebo na vlastních počítačích, příp. v Apple macOS na vlastních počítačích.

MS Windows

Uživatelské jméno (login) a heslo do MS Windows na učebně jsou stejné jako do Portálu UP. Rozložení klávesnice je zde české (QWERTZ). Přihlásíme se.

Jsou zde předinstalované programy PuTTY a WinSCP. Na vlastních počítačích stáhneme jejich portabilní verze (bez potřeby instalace) z putty.software (Download, Alternative binary files, soubor putty.exe pro 64-bit x86), resp. winscp.net (Download, other downloads, Portable executables, Download, soubor WinSCP-x.y.z-Portable.zip). Použijeme je ke vzdálenému připojení k linuxovému serveru phoenix.inf.upol.cz pro zadávání textových příkazů (PuTTY) a přenosu souborů na/z něj (WinSCP).

Login a heslo do linuxu

Uživatelské jméno (login) a náhodně vygenerované heslo na phoenix.inf.upol.cz a do linuxu na učebnách byly uživatelům zaslány na UP mail (předmět: Heslo do linuxu na KI pro ucet login). Jméno je stejné jako do Portálu UP, heslo ale nikoliv! Heslo obsahuje i speciální znaky (mimo písmena a číslice), je doporučeno jej z mailu zkopírovat a vložit do místa zadávání.

Vzdálené textové připojení k linuxovému serveru – PuTTY

PuTTY je svobodný SSH aj. klient a emulátor textového terminálu ("příkazový řádek", CLI = Command Line Interface) nejen pro MS Windows. Spustíme jej a připojíme (přihlásíme) se k SSH serveru phoenix.inf.upol.cz tak, že toto jméno zadáme do pole Host Name (or IP address) a stiskneme tlačítko Open (nebo klávesu Enter, při prvním připojení je pak ještě potřeba potvrdit bezpečnostní upozornění tlačítkem Accept nebo Connect Once). Poté postupně zadáme v terminálu uživatelské jméno a heslo, za výzvy login as: a password:, s potvrzením obého klávesou Enter. POZOR: Při zadávání hesla není od terminálu žádná odezva (žádné hvězdičky, puntíky apod., z bezpečnostních důvodů)! Pro vložení zkopírovaného hesla ze schránky zde nefunguje klávesová zkratka Control-V, vložení se provede klávesovou zkratkou Shift-Insert nebo stisknutím pravého tlačítka myši (nad terminálem).

Po úspěšném připojení se v terminálu zobrazí úvodní "banner" a na posledním řádku výzva (prompt) k zadání příkazu. Zadáme příkaz logout nebo exit (s potvrzením klávesou Enter) a tím se od serveru odpojíme (odhlásíme).

– Úkol 1:
V MS Windows případně stáhněte a spusťte program
PuTTY (Download, Alternative binary files, soubor putty.exe pro 64-bit x86), připojte (přihlašte) se pomocí něj pod svým uživatelským jménem k serveru phoenix.inf.upol.cz a odpojte (odhlašte) se z něj.

Přenos souborů na/z linuxového serveru – WinSCP

WinSCP je grafický SFTP (SCP) aj. klient pro MS Windows. Spustíme jej a opět se připojíme (přihlásíme) k SSH serveru phoenix.inf.upol.cz. Do pole Host name: zadáme toto jméno, volitelně můžeme do polí User name: a Password: zadat uživatelské jméno a heslo, a stiskneme tlačítko Login (nebo klávesu Enter, při prvním připojení je pak opět ještě potřeba potvrdit bezpečnostní upozornění tlačítkem Accept). Poté, pokud jsme je nezadali už v předchozím dialogu, postupně zadáme uživatelské jméno a heslo, do polí Username: a Password: (s potvrzením obého klávesou Enter nebo tlačítkem OK).

Po úspěšném připojení je v levé části okna zobrazen seznam souborů a adresářů na místním počítači, v pravé části na serveru. Soubor nebo adresář zkopírujeme z místního počítače na server (upload) například tak, že v seznamu pro server otevřeme cílový adresář na serveru (klávesami ↑ a ↓ a Enter nebo myší, výchozí je domovský adresář uživatele), v seznamu pro místní počítač zvolíme soubor nebo adresář (focus) a stiskneme klávesu F5 (a potvrdíme klávesou Enter nebo tlačítkem OK). Kopírování ze serveru na místní počítač (download) provedeme stejně, jen zaměníme server a místní počítač. Pro přesun označení (focus) mezi seznamy pro místní počítač a server můžeme použít i klávesu Tab. Soubory a adresáře můžeme i přesouvat (klávesa F6), mazat (F8), přejmenovat (F2) nebo vytvářet nové (adresáře F7). Odpojení (odhlášení) se od serveru provedeme jednoduše ukončením programu (s potvrzením tlačítkem Yes).

– Úkol 2:
V MS Windows případně stáhněte a spusťte program WinSCP (Download, other downloads, Portable executables, Download, soubor WinSCP-x.y.z-Portable.zip), připojte (přihlašte) se pomocí něj pod svým uživatelským jménem k serveru phoenix.inf.upol.cz, zkopírujte nějaký soubor nebo adresář z MS Windows na server a zpět a odpojte (odhlašte) se ze serveru.

Apple macOS

V Apple macOS můžeme ke vzdálenému připojení k linuxovému serveru phoenix.inf.upol.cz použít aplikace Terminál pro zadávání textových příkazů, ve spojení s programem ssh, a Cyberduck k přenosu souborů na/ze server/u.

Vzdálené textové připojení k linuxovému serveru – Terminál a příkaz ssh

Terminál je předinstalovaný emulátor textového terminálu ("příkazový řádek"). Po jeho spuštění se v něm k SSH serveru phoenix.inf.upol.cz připojíme (přihlásíme) pomocí programu SSH klienta zadáním příkazu ssh login@phoenix.inf.upol.cz, kde login je uživatelské jméno, s potvrzením klávesou Enter. Zadáváme pouze heslo, za výzvu password: (pokud v příkazu nezadáme část login@, zadáváme před heslem i uživatelské jméno, za výzvu login:) a opět POZOR, při zadávání hesla není od terminálu žádná odezva! Zadání hesla potvrdíme taktéž klávesou Enter. Po úspěšném připojení je to stejné jako u PuTTY.

Přenos souborů na/z linuxového serveru – Cyberduck

Cyberduck je grafický SFTP (SCP) aj. klient a je potřeba jej doinstalovat z App Store (v nabídce pod ikonou "jablka" v levém horním rohu obrazovky) nebo cyberduck.io (Download, Cyberduck for macOS, soubor Cyberduck-x.y.z.w.zip). Po jeho spuštění se k SSH serveru phoenix.inf.upol.cz připojíme (přihlásíme) tak, že v titulkovém pruhu okna klikneme na Nové spojení, v dialogu v roletkové nabídce nahoře zvolíme SFTP (SSH File Transfer Protocol), jméno serveru zadáme do pole Server: a uživatelské jméno do pole Jméno:. Heslo zde můžeme volitelně zadat také, do pole Heslo:, nebo ho zadáme až v následném dialogu, po jehož potvrzení a úspěšném připojení je v okně zobrazen seznam souborů a adresářů na serveru. Odpojení (odhlášení) se od serveru pak provedeme kliknutím na ikonu "eject" vpravo v titulkovém pruhu okna nebo jednoduše ukončením programu.

Cvičení 2


Ve druhém cvičení se již přesuneme do unixového systému, do linuxu na učebně nebo na vlastním počítači, příp. do Apple macOS na vlastním počítači.

linux

Na učebně je předinstalovaná distribuce Debian GNU/Linux, kterou zvolíme v nabídce při startu počítače. Na vlastní počítač případně nainstalujeme kteroukoliv zvolenou distribuci linuxu (přehled např. na Linux.cz). Výchozí uživatelské rozhraní na učebně je grafické, výchozím uživatelským prostředím po přihlášení uživatele je desktop Gnome.

Přihlašovací obrazovka (GDM)

Do linuxu na učebně se přihlásíme pomocí stejného uživatelského jména (login) a hesla jako na server phoenix.inf.upol.cz, ke kterému jsme se připojovali v předchozím cvičení. POZOR: Před prvním přihlášením se do linuxu na učebně je nutné se předtím přihlásit (skrze SSH) na server phoenix.inf.upol.cz! – pomocí PuTTY v MS Windows nebo programu ssh v linuxu a Apple macOS; toto máme hotovo z prvního cvičení.

Pokud jsme se na daném počítači již do linuxu někdy dříve přihlásili, můžeme vybrat (klinutím) své plné jméno v seznamu uprostřed přihlašovací obrazovky. V opačném případě klikneme na text Nejste na seznamu? pod seznamem a zadáme své uživatelské jméno (s potvrzením klávesou Enter). Následně, při zadávání hesla, se místo zadávaných znaků vypisují puntíky a zadané skutečné znaky je možné zobrazit a skrýt kliknutím na ikonku "oka". Zadané heslo opět potvrdíme klávesou Enter.

Na přihlašovací obrazovce je možné, pro zadání uživatelského jména a zejména hesla, zvolit rozložení klávesnice, anglické nebo české (QWERTY), a to kliknutím na indikátor aktuálního rozložení en, resp. cs, v pravém horním rohu obrazovky a volbou v nabídce nebo přímo klávesovou zkratkou Super-mezerník (či Windows-mezerník). Vedle indikátoru aktuálního rozložení klávesnice jsou také ikony pro nastavení záležitostí přístupnosti (accessibility, ikona "panáčka" nalevo) a pro vypnutí a restartování počítače (ikona "vypínače" napravo, zcela v rohu obrazovky; možnost uspání počítače je vypnutá).

– Úkol 1:
Přihlašte se v grafické přihlašovací obrazovce (GDM) pod svým uživatelským jménem do unixového systému (linux) a následující provádějte v něm. (V případě linuxu na učebně je nutné se před prvním přihlášením zde předtím přihlásit (skrze SSH) na server phoenix.inf.upol.cz! – pomocí PuTTY v MS Windows nebo programu ssh v linuxu a Apple macOS.)

Uživatelské prostředí – desktop Gnome

Ihned po přihlášení uživatele (zahájení uživatelského sezení, session) může být zobrazen přehled Činností, viz další odstavec, v tom případě stačí kliknout na prázdnou plochu nebo na okno kterékoliv případně spuštěné aplikace. V případě prvního přihlášení uživatele může být spuštěna stručná úvodní prohlídka, kterou je možné přeskočit.

Téměř veškerá aktivita v desktopu, včetně spouštění aplikací, se děje skrze přehled Činností, který vyvoláme nejrychleji stiskem klávesy Super (Windows), ale také kliknutím na "pomlčku s tečkou" zcela vlevo v horní liště desktopu nebo pouhým najetím myši zcela do levého horního rohu obrazovky. Stejnými způsoby se vrátíme zpět do pracovní plochy, plus také klávesou Esc. Aplikace lze v přehledu spustit kliknutím na ikonu aplikace v nabídce (toolbar) dole na obrazovce nebo přímo psaním jména aplikace (nebo něčeho, co s aplikací souvisí) a následně kliknutím na ikonu nabídnuté vyhledané aplikace (ikonu lze vybrat i klávesami ← a → a následně aplikaci spustit pomocí klávesy Enter). Nabídku všech (grafických) aplikací lze zobrazit kliknutím na "mřížku teček" v toolbaru, nabídkou lze skrolovat kolečkem myši (nebo i klávesami PageUp a PageDown, výběr ikony aplikace i klávesami šipek). Tuto nabídku opustíme, bez spuštění aplikace, opět klávesou Esc.

Uživatelské prostředí desktopu je běžné okenní, běžící aplikace se zobrazují v (možno i překrývajících se) oknech. Okno můžeme přesouvat tažením myší nejen za titulkový pruh, ale při stisknuté klávese Super také kdekoliv v okně, nebo po stisku Alt-F7 i klávesami šipek (a potvrzením klávesou Enter). Změna velikosti okna je možná klasicky tažením myší za hranu okna, ale také opět po stisku Alt-F8 i klávesami šipek. Vedle tlačítek v titulkovém pruhu okno maximalizujeme i pomocí Alt-F10 a zavřeme (aplikaci ukončíme) pomocí Alt-F4. Mezi okny různých aplikací se přepneme klasicky pomocí Alt-Tab (nebo i Super-Tab), mezi okny téže aplikace pak pomocí Alt-` (Super-`). Akce přesunu, zavření a přepnutí okna můžeme provádět, klinutím nebo tažením myší, i v přehledu Činností, kde se všechna okna zobrazují zmenšená a nepřekrývající se.

Desktop standardně podporuje více pracovních ploch. Kromě těch s přítomnými okny je (ve výchozím nastavení) vždy k dispozici další prázdná plocha navíc. Okna můžeme přesouvat i mezi plochami, pro přepnutí na jinou plochu máme několik možností: skrolování kolečkem myši nad indikátorem ploch zcela vlevo v horní liště (ona "pomlčka" pro aktivní plochu a "tečky" pro další), klávesami PageUp a PageDown v přehledu Činností, kde jsou miniatury ploch zobrazeny vpravo, nebo přímo klávesovými zkratkami Super-PageUp a Super-PageDown. Za povšimnutí stojí absence jakýchkoliv ikon (aplikací, souborů nebo adresářů) na plochách a nemožnost je tam nějak přidat. To je vlastnost desktopu Gnome, existuje ale způsob, jak ikony souborů a adresářů na plochu přidat: rozšíření (extension) Gnome, např. Desktop Icons NG.

Mezi základní aplikace grafického uživatelského prostředí dnes jistě patří prohlížeč souborů, webový prohlížeč a textový editor. V linuxu máme tradičně na výběr; aktuálně výchozí v desktopu Gnome jsou to aplikace Soubory, Firefox a Textový editor, ale dostupné (předinstalované na učebně nebo v distribuci) jsou i např. webový prohlížeč Chromium nebo textový editor Gedit. Počínaje třetím cvičením budeme používat ještě emulátor textového terminálu v podobě například výchozí aplikace Terminál.

– Úkol 2:
V grafickém uživatelském prostředí (Gnome) spusťte dostupný prohlížeč souborů (Soubory), webový prohlížeč (Firefox, Chromium) a textový editor (Textový editor, Gedit), přepínejte mezi jejich okny, okny posunujte, přesuňte je na jinou plochu desktopu, přepínejte plochy.

Pokud je nastavených více rozložení klávesnice, nalezneme opět indikátor aktuálního rozložení en, resp. cs, stejně jako na přihlašovací obrazovce, v pravém horním rohu obrazovky, v horní liště nalevo od indikátorů zařízení (zvuku, sítě aj.). Rozložení opět změníme kliknutím na indikátor a volbou v nabídce nebo přímo klávesovou zkratkou Super-mezerník (Windows-mezerník). Navíc jsou nyní v nabídce s rozloženími také možnosti zobrazení aktuálního rozložení (včetně variant při stisku modifikátorů Shift nebo RightAlt/AltGr!) a nastavení klávesnice včetně přidání/odebrání rozložení. Pokud je ovšem nastaveno pouze jedno rozložení klávesnice, indikátor aktuálního rozložení zobrazen není a k nastavení klávesnice se dostaneme v rámci nastavení celého desktopu, aplikace Nastavení. K tomu vede cesta i skrze systémovou nabídku. Tu otevřeme kliknutím na indikátory zařízení (spolu s ikonou "vypínače") zcela vpravo v horní liště a Nastavení jsou pod ikonou "ozubeného kolečka". V okně Nastavení pak v seznamu vlevo vybereme položku Klávesnice a rozložení klávesnice zde můžeme přidat nebo odebrat nastavením Vstupních zdrojů.

– Úkol 3:
Zkontrolujte v grafickém uživatelském prostředí (Gnome) dostupnost volby anglického a českého rozložení klávesnice, pokud některé z nich chybí, přidejte jej (Nastavení, Klávesnice), mezi rozloženími přepínejte a zobrazte si je.

Vzdálené připojení k MS Windows

V prvním cvičení jsme se vzdáleně textově připojovali k linuxovému serveru phoenix.inf.upol.cz z MS Windows pomocí SSH klienta PuTTY. Přestože PuTTY je dostupné i pro linux, z linuxu se k serveru připojíme až ve třetím cvičení pomocí programu ssh v textovém uživatelském prostředí ("příkazový řádek", podobně jako v prvním cvičení v případě Apple macOS).

Nyní se připojíme (přihlásíme) vzdáleně graficky k MS Windows serveru terminal.inf.upol.cz. V desktopu Gnome je tomu jednoduchá aplikace Připojení, klient vzdálené pracovní plochy (samozřejmě jsou k dispozici i další, např. Remmina). Po jejím spuštění klikneme na ikonu "plus" vlevo v titulkovém pruhu okna, zadáme síťové jméno terminal.inf.upol.cz, typ připojení ponecháme RDP a stiskneme tlačítko Připojit (při prvním připojení je ještě potřeba potvrdit bezpečnostní upozornění). POZOR: Server terminal.inf.upol.cz je dostupný pouze z univerzitní sítě (pro připojení odjinud je nutné vytvořit VPN připojení k univerzitní síti)! Do polí Uživatelské jméno... a Heslo... zadáme uživatelské jméno (login) a heslo do MS Windows (stejné jako do Portálu UP, do pole Doména... není třeba nic zadávat, ale můžeme zadat PRFAD) a stiskneme tlačítko Ověřit. Pro opětovné připojení k serveru, ke kterému jsme se již někdy dříve připojovali, pak stačí v okně aplikace kliknout na dlaždici se jménem serveru.

– Úkol 4:
Pomocí aplikace Připojení (nebo jiné pro vzdálené RDP připojení) se připojte (přihlašte) pod svým uživatelským jménem k MS Windows serveru terminal.inf.upol.cz a odpojte (odhlašte) se z něj.

Připojení síťového disku

Pro přenos souborů na/z MS Windows můžeme využít připojení adresáře jako síťového disku, přímo v prohlížeči souborů (v desktopu Gnome aplikace Soubory). Připojíme si uživatelský domovský adresář v MS Windows na učebnách a serverech katedry. V okně aplikace Soubory vybereme v seznamu vlevo položku Síť, do pole dole zadáme adresu smb://dragon.inf.upol.cz/students-homes/login, kde login je uživatelské jméno do MS Windows (smb je označení síťové služby sdílení souborů a adresářů v MS Window, dragon.inf.upol.cz je síťové jméno serveru a students-homes je adresář s domovskými adresáři uživatelů) a stiskneme tlačítko Připojit. POZOR: I server dragon.inf.upol.cz je dostupný pouze z univerzitní sítě (a pro připojení odjinud je nutná VPN)! V následném dialogu zvolíme Registrovaný uživatel, zadáme uživatelské jméno (login) a heslo do MS Windows, do polí Uživatelské jméno a Heslo, do pole Doména zadáme PRFAD (zde je to nutné) a stiskneme tlačítko Připojit. Po ukončení práce s připojeným síťovým diskem jej odpojíme například kliknutím v okně aplikace Soubory na ikonu "eject" vedle pojmenování disku (adresáře) v seznamu vlevo. V okně, po výběru vlevo položky Síť, rovněž vidíme seznam připojení z dřívějška a pro opětovné připojení stačí vybrat položku seznamu (jako otevření adresáře). Užitečný může být na serveru dragon.inf.upol.cz také adresář vyuka, obsahující výukové materiály od vyučujících (adresa smb://dragon.inf.upol.cz/vyuka).

Podobně si můžeme připojit jako síťový disk i adresář z linuxového serveru, v našem případě uživatelský domovský adresář na serveru phoenix.inf.upol.cz. Adresa bude jen ssh://phoenix.inf.upol.cz (bez zadání adresáře, domovský adresář uživatele je výchozí; také je možné místo ssh zadat sftp). Uživatelské jméno (login) a heslo je na tento server. V linuxu na učebně je toto připojení ale nadbytečné, protože uživatelské domovské adresáře na serveru phoenix.inf.upol.cz jsou zde připojeny automaticky při startu systému a fungují jako domovské adresáře uživatelů přihlašovaných i na učebně.

– Úkol 5:
V prohlížeči souborů (Soubory) si připojte pod svým uživatelským jménem jako síťový disk Váš domovský adresář dragon.inf.upol.cz/students-homes/login (kde login je Vaše uživatelské jméno) v MS Windows, zkopírujte nějaký soubor nebo adresář z linuxu na disk (do adresáře v MS Windows) a zpět a disk odpojte.

Nápověda a odhlášení

Na závěr se ještě vrátíme k samotnému uživatelskému prostředí, desktopu Gnome. Má výborně zpracovanou a do češtiny přeloženou nápovědu v podobě aplikace Nápověda.

Nakonec, cesta k odhlášení se ze systému vede přes systémovou nabídku (ale i přímo přes klávesovou zkratku Control-Alt-Delete). K té se, pro zajímavost, vedle již zmíněného kliknutí na indikátory zařízení (spolu s ikonou "vypínače") zcela vpravo v horní liště, můžeme dostat i pomocí pouze klávesnice: zkratka Control-Alt-Tab, volba Horní lišta a poté klávesy šipek a Enter. Kromě nastavení celého desktopu ("ozubené kolečko") a různých tlačítek a jiných prvků pro nastavení zařízení (zvuku, sítě aj.) jsou zde i ikony pro uzamčení desktopu (uživatelského sezení, ikona "zámku", pro odemčení je nutné zadat heslo) a pro vypnutí a restartování počítače (ikona "vypínače"; možnost uspání počítače je na učebně vypnutá). A pod touto druhou ikonou je právě ukrytá i možnost odhlášení se ze systému (ukončení uživatelského sezení), případně také dočasného přepnutí na jiného uživatele (to znamená uzamčení sezení, přihlášení se jiného uživatele a po jeho odhlášení odemčení sezení).

– Úkol 6:
Prohlédněte si nápovědu grafického uživatelského prostředí (Gnome) a nakonec se ze systému odhlašte.

Ještě poznámka: na přihlašovací obrazovce GDM na učebně je možné zvolit pro sezení (session) jiné předinstalované uživatelské prostředi než výchozí desktop Gnome – po výběru nebo zadání uživatelského jména, před potvrzením hesla, kliknutím na ikonu "ozubené kolečko" v pravém dolním rohu obrazovky a výběrem položky.

Apple macOS

Přihlašovací obrazovka

V Apple macOS je uživatelské rozhraní rovněž grafické, přihlašovací obrazovka je podobná jako v linuxu. Přihlášení zadáním hesla funguje stejně, možnost volby rozložení klávesnice v pravém horním rohu obrazovky zde může být také, stejně jako je zde ikona pro vypnutí a restartování počítače.

Uživatelské prostředí

Uživatelské prostředí je bežné okenní, není zde ovšem přehled Činností jako v desktopu Gnome. Nabídka (toolbar) dole na obrazovce s vybranými aplikacemi je přítomná vždy, všechny aplikace jsou dostupné pod ikonou "barevných čtverečků" (Launchpad), kde je pak i možnost vyhledání aplikace psaním jejího jména. Práce s okny je klasická, pro přepínání mezi okny (aplikacemi) slouží klávesová zkratka command-Tab. Atypické je umístění nabídky (menu) aplikace, která bývá obvykle v okně dané aplikace pod titulkovým pruhem, do horní lišty celého prostředí. Více pracovních ploch prostředí nepodporuje, na plochu je ale možné standardně umísťovat ikony souborů a adresářů.

Aplikacemi prohlížeče souborů, webového prohlížeče a textového editoru jsou Finder, Safari a TextEdit, emulátor textového terminálu je rovněž aplikace Terminál (již jsme ji použili v prvním cvičení).

Se změnou rozložení klávesnice kliknutím na indikátor aktuálního rozložení v horní liště vpravo, nalevo od indikátorů zařízení (zvuku, sítě aj.), je to stejné jako v desktopu Gnome. Pro změnu přímo je klávesová zkratka control-mezerník. V nabídce s rozloženími jsou také možnosti zobrazení aktuálního rozložení (Zobrazit prohlížeč klávesnic, včetně varianty při stisku modifikátoru option) a nastavení klávesnice, ke kterému se dostaneme i rámci nastavení celého systému, aplikace Nastavení systému. K tomu vede cesta i skrze systémovou nabídku, kterou otevřeme kliknutím na ikonu "jablka" zcela vlevo v horní liště. V okně Nastavení systému pak v seznamu vlevo vybereme položku Klávesnice, pod titulkem Zadáni textu klikneme na tlačítko Upravit... vedle Vstupní zdroje a v následném dialogu rozložení klávesnice přidáme nebo odebreme.

Vzdálené připojení k MS Windows

Pro toto je potřeba doinstalovat aplikaci pro vzdálené RDP připojení, například oficiální MS Remote Desktop (nově Windows App for Mac), z App Store nebo What's new in Windows App (tab macOS, odkaz na .pkg v tabulce, soubor Windows_App_x.y.z_installer.pkg). Po jejím spuštění se k MS Windows serveru terminal.inf.upol.cz graficky připojíme (přihlásíme) tak, že v nabídce (menu) aplikace vybereme položky Connections a PC Quick Connect..., do pole PC name: zadáme jméno serveru a po stisku tlačítka Connect pokračujeme obdobně jako u aplikace Připojení v desktopu Gnome.

Připojení síťového disku

Připojení adresáře z MS Windows jako síťového disku podporuje přímo prohlížeč souborů (aplikace Finder). Pro připojení uživatelského domovského adresáře v MS Windows na učebnách a serverech katedry vybereme v nabídce (menu) aplikace Finder položky Otevřít a Připojit k serveru... a dále postupujeme obdobně jako u prohlížeče souborů v linuxu (v desktopu Gnome aplikace Soubory).

Připojení adresáře z linuxového serveru, v našem případě uživatelského domovského adresáře na serveru phoenix.inf.upol.cz, jako síťového disku už aplikace Finder přímo nepodporuje. Podporu je potřeba doinstalovat, například Mountain Duck, z App Store nebo z mountainduck.io/ (Download for Mac, soubor Mountain Duck-x.y.z.w.zip). Po spuštění se v horní liště vpravo vedle indikátoru aktuálního rozložení klávesnice objeví ikona "kachničky". Po kliknutí na ni a výběru položky Nové spojení... postupujeme stejně jako u aplikace Cyberduck v prvním cvíčení a po úspěšném připojení je připojený adresář jako síťový disk otevřen v aplikaci Finder. Odpojení disku provedeme například v okně aplikace Fider kliknutím na ikonu "eject" vedle pojmenování disku (adresáře) v seznamu vlevo.

Nápověda a odhlášení

Česká nápověda je (online) dostupná v menu (výchozí) aplikace Finder, položky Nápověda a Nápověda pro macOS.

Odhlášení se ze systému je dostupné skrze systémovou nabídku (ikona "jablka" zcela vlevo v horní liště), položka Odhlásit uživatele jméno.... Navíc zde najdeme i položky pro uzamčení prostředí (Zamknout obrazovku) a pro vypnutí a restartování (a uspání) počítače.

Cvičení 3


Ve třetím cvičení "vyměníme" grafické uživatelské rozhraní za pro unixové systémy původní textové, poskytované emulátorem terminálu Terminál (který je výchozí v grafickém desktopu Gnome) nebo jinou aplikaci tohoto druhu (např. Konsole, xterm apod.). V Apple macOS jde rovněž o aplikaci Terminál. Jelikož jde o aplikaci v grafickém uživatelském prostředí, kde již jsme přihlášeni, v okně (emulátoru) terminálu se po jeho spuštění již znovu nepřihlašujeme. Můžeme ale použít i emulátor terminálu pro vzdálené připojení k unixovému systému, např. k linuxovému serveru phoenix.inf.upol.cz z MS Windows, třeba aplikaci PuTTY z prvního cvičení, kde se ke vzdálenému systému přihlásíme. V tomto textovém rozhraní už víceméně zůstaneme po všechna zbývající cvičení.

– Úkol 1:
V grafickém uživatelském prostředí (Gnome) spusťte aplikaci emulace terminálu (Terminál, Konsole, xterm apod.) a následující provádějte v této aplikaci (terminálu).

Příkazový řádek a interpret (shell)

Uživatelským pracovním prostředím v textovém emulátoru terminálu (dále jen terminálu) je prostředí tzv. příkazového řádku (command line interface, CLI). Ten je poskytovaný programem příkazového interpretu (shell), který je spuštěný v terminálu po případném (vzdáleném) přihlášení uživatele (v rámci uživatelského sezení, session). Výchozím příkazovým interpretem v linuxu na učebně, ale i v mnoha linuxových distribucích a jiných unixových systémech, je shell Bash (Bourne-Again Shell) z projektu GNU. V Apple macOS je výchozí Z shell, ale bývá předinstalovaný i GNU Bash – spustíme jej zadáním v Z shellu příkazu bash (potvrzeném klávesou Enter). Nadále budeme předpokládat shell GNU Bash, ale mnohé je funkční i v Z shellu.

V jednořádkovém prostředí shellu v terminálu (text delší než šířka terminálu pokračuje na dalším řádku, ale je stále uvažovaný jako jeden řádek) mu zadáváme textové příkazy, za výzvu shellu (prompt). Ta je zobrazena na prvním řádku terminálu (shora) od začátku (zleva) a má typickou podobu login@hostname:adresar$ (plus ještě mezera za $), kde login je uživatelské jméno (login), hostname síťové jméno počítače, na kterém shell běží, a adresar je aktuální adresář shellu – shell se vždy "nachází" v nějakém adresáři, výchozí po spuštění shellu je domovský adresář uživatele. Podobně vypadá i prompt Z shellu v Apple macOS, prompt shellu Bash zde ale má strohou podobu bash-verze$. Dodejme, že prompt superuživatele root má na konci typicky # místo $ a že podobu promptu si uživatel může nastavit vlastní (toto ale dělat nebudeme).

Pro další text si zjednodušíme značení klávesových zkratek: C- znamená Control- (tj. za stisku klávesy Control stisknout klávesu uvedenou za -), podobně S- pro Shift-; S-C- znamená Shift-Control-. M- je pro původní klávesu Meta, kterou na současných klávesnicích reprezentuje klávesa (levý) Alt a na klávesnicích Apple ji zastupuje klávesa option, značená O-.

Znaky textu příkazu na příkazovém řádku shellu zadáváme na pozici textového kurzoru (vyplněný obdélník nebo podtržítko, případně blikající), který se s každým zadaným znakem posune o jednu pozici doprava. Po zadaném textu můžeme kurzorem pohybovat a text editovat. Pro pohyb kurzorem po znacích (předchozí a následující) jsou klávesy ← a →, po slovech textu (kde slovo je posloupnost znaků bez mezery nebo tabulátoru), po začátcích, resp. koncích slov, pohybujeme kurzorem pomocí C-← a C-→ (nebo i M-← a M-→), na začátek nebo konec textu kurzor přesuneme pomocí Home a End (nebo také C-a a C-e). Pro základní editaci zadaného textu obvykle fungují Del (pokud ne nebo klávesa není, pak C-d) pro výmaz znaku na kurzoru a Backspace pro výmaz znaku před kurzorem, dle očekávání. Část slova od kurzoru k začátku slova vymažeme pomocí M-Backspace, po konec slova pak pomocí M-d. Znak na kurzoru prohodíme s předchozím znakem pomocí C-t, slovo s kurzorem s předchozím slovem pak pomocí M-t. Část celého textu od kurzoru k začátku textu (po prompt) vymažeme pomocí C-u, po konec textu pak pomocí C-k. Velmi užitečné je to, že jakákoliv vymazaná část slova nebo celého textu je uložena do "schránky řádku" a lze ji opětovně vložit na pozici kurzoru pomocí C-y.

V okně terminálu v grafickém prostředí můžeme využít pro kopírování textu příkazového řádku i pouze myš, případně s klávesovými zkratkami, stejně jako pro kopírování textu v oknech jiných aplikací (přes "schránku", operace copy&paste). V grafickém rozhraní unixových systémů včetně linuxu obvykle stačí text označit myší a pro jeho vložení, například na místo kurzoru v terminálu, jen stisknout kolečko myši. Případně pro zkopírování myší označeného textu a jeho vložení mohou v terminálu fungovat klávesové zkratky S-C-c a S-C-v (v jiných aplikacích jen obvyklé C-c a C-v).

Potvrzení zadaného textu (i prázdného) na příkazovém řádku, tedy "odeslání" jej shellu jako příkazu k vykonání, provedeme klávesou Enter. V terminálu se může zobrazit nějaký výstup vykonání příkazu a poté je opět zobrazena výzva shellu (prompt).

Když je příkazy a jejich výstupy zaplněna celá obrazovka (okno) terminálu, typicky 24 nebo 25 řádků, začne při dalším zobrazovaném textu skrolovat nahoru, tj. nejstarší text (horní řádky) vyroluje "nad" obrazovku. K němu se můžeme vrátit a obrazovkou terminálu, jako náhledem (oknem) na část textu, standardně na poslední, můžeme po celém textu posouvat (skrolovat), klávesovými zkratkami S-PageUp a S-PageDown nebo i kolečkem myši nad terminálem (případně často i dvěma prsty nahoru a dolů po touchpadu). V Apple macOS fungují fn-↑ a fn-↓ (a dva prsty po touchpadu). Text na obrazovce můžeme také vyrolovat (obrazovku smazat) nahoru tak, že na obrazovce zůstane jen prompt na prvním řádku nahoře, klávesovou zkrakou C-l.

– Úkol 2:
Napište do příkazové řádky shellu v terminálu (za výzvu, prompt) jakýkoliv text, pohybujte po něm kurzorem, editujte jej (včetně kopírování) a potvrďte jej shellu jako příkaz (v tuto chvíli nezáleží na tom, jestli platný). Zaplňte textem příkazů a jejich výstupy celou obrazovku (okno) terminálu a poté obrazovkou skrolujte.

Historie příkazů

Shell udržuje historii všech zadaných příkazů, kterou je možné listovat a prohledávat. Historie je, po ukončení shellu, ukládaná do souboru (s omezením na počet příkazů v řádu obvykle stovek nebo tisíců) a jiný shell v jiném terminálu (i v dalším uživatelském sezení) historii ze souboru při svém spuštění načítá a svoji historii příkazů po ukončení do souboru přidává; takže je možné listovat a prohledávat i historii z předchozích shellů. K předchozím příkazům do minulosti se v historii vrátíme pomocí ↑, k následujícím blíže k přítomnosti pomocí ↓. Příkaz z historie se ihned objevuje na řádku za promptem a pro znovuspuštění ho stačí potvrdit. Pro skok na první příkaz v historii obvykle funguje M-<, za poslední příkaz pak M->. Interaktivní vyhledávání v historii zahájíme klávesovou zkratkou C-r (prompt shellu se změní) a pak zadáváme text vyskytující se v hledaném příkazu (mazání pomocí Backspace), který se ihned zobrazuje na řádku a stačí jej potvrdit; nebo vyhledávání zrušíme pomocí C-g. Opětovný stisk C-r během vyhledávání vyhledá předchozí příkaz s výskytem zadaného textu a stisk ↑ nebo ↓ při vyhledaném příkazu zobrazí na řádku příkaz v histori hned před nebo za ním a vyhledávání se ukončí. Doplňme ještě dopředu (viz dále), že celou historii shellu si můžeme zobrazit pomocí příkazu history.

– Úkol 3:
Listujte v shellu historií zadaných příkazů, historii si zobrazte a nějaký předchozí příkaz v historii vyhledejte a spusťte znovu.

Příkazy a programy

Jednoduchý příkaz shellu je seznam slov oddělených mezerami nebo tabulátory (tzv. bílými znaky). První slovo, běžně chápané jako jméno příkazu, se shell snaží vykonat, s dalšími volitelnými slovy jako jeho argumenty, a pokud to není interní příkaz shellu, představuje první slovo název programu, který shell zkusí spustit. Pokud program daného názvu není v systému dostupný, vykonání příkazu (spuštění programu) končí chybou, podobně jako například při chybném seznamu argumentů příkazu. Argumentům začínajícím znakem - (pomlčka) se říká přepínače (options). POZOR: Jména interních příkazů, názvy programů i argumenty jsou (u shellu Bash i jiných) citlivá na velikost písmen, tzv. case-sensitive! U Z a Bash shellu v Apple macOS se to ale týká jen argumentů.

Nyní si již nějaké platné příkazy (s v systému existujícími programy) vyzkoušíme. Například příkaz date, spouštějící program date, zobrazí (vypíše) aktuální systémový datum a čas. Po vyzkoušení příkazů DATE nebo Date se naopak objeví chybová hláška shellu příkaz nenalezen. Příkaz date -d tomorrow +%A s argumenty (-d je přepínač), v Apple macOS date -v+1d +%A, zobrazí jen jméno zítřejšího dne. Co argumenty znamenají, se dozvíme později v nápovědě k programu date. Příkazy who a w zobrazují nějaké infomace k aktuálně přihlášeným uživatelům v systému, druhý příkaz navíc na prvním řádku výpisu informace o době běhu systému a jeho akuálním vytížení. Velmi užitečný, i když se to na první pohled nezdá, je příkaz echo, který "jen" zobrazí (vypíše) v terminálu své argumenty (vyjma přepínačů, kterým "rozumí"), např. echo Ahoj svete!.

Příkazů můžeme na příkazový řádek zadat i více "naráz" a nechat je vykonat postupně všechny po potvrzení jedním Enter. V tom případě je oddělíme znakem ; (středník). Budou vykonány po sobě, další vždy až skončí předchozí (existuje i možnost souběžného vykonávání více příkazů, o tom ale až v šestém cvičení). Například echo -n Pocitac:\ ; hostname. Příkaz echo -n Pocitac:\  (všimněme si mezery za \) zde nejprve zobrazí text Pocitac:  (včetně mezery za :) a příkaz hostname pak síťové jméno počítače. Pro přepínač -n viz nápovědu shellu k příkazu echo dále, konstrukce \  (\ a mezera) představuje způsob, jak na příkazovém řádku zadat mezeru tak, aby byla součástí příkazu a ne oddělovačem jména a argumentů příkazu (více opět viz šesté cvičení).

Vzdálené textové připojení k linuxovému serveru – ssh

Program ssh (secure shell) je textový SSH klient a můžeme jej použít ke vzdálenému připojení (přihlášení) k linuxovému serveru phoenix.inf.upol.cz, podobně jako grafický program PuTTY pro MS Windows v prvním cvičení. Příkaz je ssh login@phoenix.inf.upol.cz, kde login je uživatelské jméno na serveru. Po spuštění příkazu za výzvu password: zadáme heslo na tento server (pokud v příkazu nezadáme část login@, zadáváme před heslem i uživatelské jméno, za výzvu login:), které opět potvrdíme klávesou Enter. POZOR: Při zadávání hesla není od terminálu žádná odezva (z bezpečnostních důvodů)! Po úspěšném připojení k serveru je to stejné jako u PuTTY.

Úkol 4:
Pomocí programu ssh se připojte (přihlašte) pod svým uživatelským jménem na server phoenix.inf.upol.cz a odhlašte se z něj.

Změna hesla a ukončení shellu

Pro změnu hesla uživatele v unixových systémech včetně linuxu bežně slouží program passwd. Za výzvy zadáme postupně stávající a dvakrát nové heslo, potvrzené klávesou Enter. Opět platí, že při zadávání hesel není od terminálu žádná odezva. V linuxu na učebnách, ale i na serveru phoenix.inf.upol.cz, jsou ovšem hesla síťově sdílená (pomocí systému NIS), takže místo passwd je zde nutné pro změnu hesla použít příkaz yppasswd.

Shell ukončíme příkazem exit. Také funguje klávesová zkratka C-d při prázdném zadávaném textu na příkazovém řádku (jen prompt). Pokud je shell tzv. přihlašovací, tzn. vznikl v důsledku přihlášení uživatele, např. přes síťovou službu SSH, lze jej ukončit také příkazem logout (viz první cvičení). Ve všech případech při ukončení shellu v terminálu dojde obvykle automaticky i k ukončení programu emulátoru terminálu (v grafickém prostředí tedy i k uzavření jeho okna; ne ovšem v Apple macOS).

Nápověda shellu a manuálové stránky

Shell má pro každy svůj (interní) příkaz integrovanou nápovědu s popisem příkazu i všech jeho argumentů, dostupnou přes příkaz help. Jako argument zadáme jméno příkazu, např. help echo, bez argumentu zobrazí seznam všech interních příkazů s jejich nejčastějšími argumenty. Pokud bychom chtěli vědět, zda je jméno interní příkaz shellu nebo program, použijeme příkaz type, např. type -a echo (a vidíme, že echo je jak interní příkaz shellu tak i program).

Úkol 5:
Zobrazte nápovědu příkazového interpretu (shellu) k příkazu echo.

Úkol 6:
Pomocí příkazu echo zobrazte Unicode znak s hodnotou (šestnáctkově) 1F600.

Hlavní formou nápovědy v unixových systémech jsou však manuálové stránky, pro (téměř) všechny programy pro textový terminál a někdy i pro grafické programy (ale i pro konfigurační a speciální soubory systému, programátorské funkce a další). Je to primární textová dokumentace programu, kterou si můžeme interaktivně prohlížet přes celou obrazovku terminálu programem man, kterému jako argument zadáme jméno programu, např. man echo. Stránky mají jednotnou strukturu: stručná charakteristika programu, zápis a popis argumentů, podrobnější popis včetně případných příkladů použití, (neinteraktivní) odkazy na jiné stránky a (konfigurační) soubory, informace o autorech, hlášení chyb a další. Interakci prohlížení stránky obvykle zajišťuje program less, ve kterém se můžeme po stránce posouvat po řádcích pomocí ↑ a ↓ nebo kolečkem myši (nebo prstem či prsty na touchpadu), po obrazovkách pomocí PagegUp a PageDown, přejít na začátek nebo konec stránky pomocí Home (také <) a End (>), ve stránce vyhledávat pomocí / (ke konci) nebo ? (k začátku) a zadáním textu spolu s Enter, opakovat poslední vyhledání pomocí n (ve směru prvního vyhledání) a N (proti směru), zobrazit vlastní nápovědu se stejnými možnostmi pomocí h a konečně opustit tuto nápovědu nebo i zobrazení manuálové stránky pomocí q.

Dodejme ještě, že manuálové stránky můžeme vyhledávat přes (přesné) jméno programu pomocí whatis a přes klíčové slovo v popisu programu v manuálové stránce pomocí apropos, kde jméno nebo slovo je argumentem těchto programů.

Úkol 7:
Prohlédněte si manuálovou stránku programu date. Co zobrazí příkaz date +%A\ %e. a proč?

Úkol 8:
Pomocí programu date (a jeho manuálové stránky) zobrazte aktuální datum ve tvaru DD. MM. RRRR (včetně mezer za tečkami).

GNU Info

V unixových systémech se základními programy z projektu GNU, tedy i v linuxových distribucích, ne však v Apple macOS, bývá k dispozici i další dokumentace, GNU Info, pro programy a programové celky či balíky. Příkaz info bez argumentu zobrazí "rozcestníkovou" stránku pro všechnu tuto dokumentaci, která je organizovaná hierarchicky s hypertextovými odkazy (podobně jako web). Ze stránky můžeme interaktivně přejít na odkazovanou stránku následováním odkazu, zobrazeného s podtrženým textem a * (hvězdičkou) před ním, klávesou Enter po přesunu kurzoru na text, na v hierarchii nadřazenou stránku pomocí u. Prohlížení samotné stránky je podobné jako u manuálové stránky, akorát klávesy šipek pohybují kurzorem a ne stránkou, navíc interaktivní vyhledávání je zahájeno pomocí C-s nebo C-r a ihned se vyhledává následně zadaný text se zrušením pomocí C-g, interní nápovědu vyvoláme pomocí H (a zavřeme pomocí l). Za prozkoumání stojí stránka pro balík programů GNU Coreutils, info coreutils, neboť ten tvoří základní programové vybavení unixových systémů, včetně programů pro základní manipulaci se soubory a s textem, kterými se v dalších cvičeních budeme zabývat.

Cvičení 4


Ve čtvrtém cvičení zůstaneme v unixovém textovém uživatelském rozhraní emulátoru terminálu z předchozího třetího cvičení a pracovním prostředí příkazového řádku (CLI) a interpretu, shellu (GNU Bash). Podíváme se na základní práci se soubory a adresáři. Většina následujících programů, i v dalších cvičeních, je z balíku GNU Coreutils.

Soubory a adresáře

Cestu k aktuálnímu adresáři shellu (shell se vždy "nachází" v nějakém adresáři, výchozí po jeho spuštění je domovský adresář uživatele) zjistíme pomocí příkazu pwd. Pro zobrazení (výpis) obsahu adresáře, tj. seznamu jmen souborů a podadresářů adresáře, slouží program ls (nebo téměř stejný dir). Bez argumentů, ls zobrazí pouze tento seznam, formátovaný do vícesloupcové tabulky na obrazovku terminálu, pro aktuální adresář. Jména mohou být obarvená, například jména (pod)adresářů modře a jména souborů s vybranými příponami různými jinými barvami, ale to záleží na nastavení shellu (a možnostech emulátoru terminálu). Další užitečné údaje k souborům a adresářům přidáme přepínačem -l: ls -l. Jména jsou nyní v posledním sloupci zobrazené tabulky, první znak prvního sloupce značí typ položky, například - (pomlčka) pro soubor, d pro adresář (další znaky prvního sloupce se týkají uživatelským práv, která si vysvětlíme v příštím, pátem cvíčení). Ve sloupci před jmény je datum a čas poslední změny obsahu souboru nebo adresáře (u adresáře to znamená změna seznamu souborů nebo podadresářů adresáře) a ve sloupci před tímto je zobrazena velikost souboru v bytech. V případě adresáře to ale není velikost adresáře ve smyslu součtu velikostí všech souborů v něm (rekurzivně v celém adresářovém podstromu), k tomu je program du níže, ale technický údaj o alokované velikosti pro obsah adresáře (tj. seznam). Pro zobrazení velikosti v nejbližším 1024-násobku bytů, tedy v kB, MB, GB atd. (tzv. "lidsky čitelný formát", "human readable"), stačí přidat ještě přepínač -h: ls -l -h, nebo i ls -lh, protože jednopísmenné přepínače lze takto "slučovat" za jednu pomlčku. Tzv. skryté soubory a adresáře přidáme do výpisu přepínačem -a: ls -a; bez něj se nezobrazují (to je celá "skrytost").

Úkol 1:
Zobrazte cestu k aktuálnímu adresáři.

Úkol 2:
Zobrazte seznam všech souborů a podadresářů, včetně tzv. skrytých, v aktuálním adresáři (= obsah adresáře) s podrobnějšími informacemi (jméno, velikost, datum, práva aj.) o nich.

Můžeme zobrazit i obsah jakéhokoliv jiného adresáře než aktuálního, když cestu k němu (relativní nebo absolutní) přidáme ls také jako argument, např. pro cestu pouze jméno ls -l public_html (předpokládáme existenci adresáře public_html v aktuálním adresáři, což je v případě domovského adresáře uživatelů na učebnách a serveru phoenix.inf.upol.cz předpřipravená situace a domovský adresář je po přihlášení uživatele výchozí aktuální). Můžeme zadat i cestu k souboru, ale to zobrazí jen výpis k samotnému souboru (což může být i tak užitečné např. ve spojení s přepínačem -l). Cest můžeme zadat i více současně, výpis je zobrazem pro každou z nich. Speciální jména . (tečka) a .. (dvě tečky) značí aktuální adresář (ten je ale bez zadání cesty u ls výchozí) a rodičovský adresář. POZOR: Jména souborů a adresářů, uváděná v cestách ale i celkově, stejně jako jména interních příkazů shellu a programů, jsou citlivá na velikost písmen (case-sensitive)! Opět se to ale netýká Apple macOS.

Pro změnu aktuálního adresáře obsahuje shell příkaz cd. Bez udání cesty jako argumentu "přepne" do domovského adresáře uživatele, pro znak - (pomlčka) jako cestu "přepne" do předchozího aktuálního adresáře (shell si pamatuje celou posloupnost aktuálních adresářů). Pro vytvoření nového (prázdného) podadresáře v aktuálním adresáři použijeme program mkdir, kterému je nutné zadat jméno nově vytvářeného adresáře, např. mkdir pokusy.

Úkol 3:
Vytvořte adresář tmp, vejděte do něj a vyjděte z něj do nadřazeného (rodičovského) adresáře.

Zmíněnou velikost adresáře ve smyslu součtu velikostí všech souborů v něm (rekurzivně v celém adresářovém podstromu) získáme programem du. Tento ale bez přepínače vypisuje velikost (a cestu) pro všechny podadresáře aktuálního adresáře, a to rekurzivně v celém podstromu adresáře (tj. pro všechny podadresáře všech jeho poadresářů), což obvykle nechceme, takže rovnou přidáme přepínač -s: du -s. Pro velikost v násobcích bytů ("human readable") opět podporuje přepínač -h: du -sh, pro jiný adresář než aktuální stačí zadat cestu k němu jako argument (i více cest).

Úkol 4:
Zobrazte velikost aktuálního adresáře (program du).

Doplňování jména v příkazovém řádku – Tab

Nesmírně užitečná je v příkazovém řádku funcionalita shellu (GNU Bash, ale i jiných) doplňování jména souboru nebo adresáře, ale také interního příkazu shellu i programu ke spuštění, a někdy (u GNU Bash) i argumentů, často přepínačů, všude tam, kde je toto jméno očekáváno, typicky jako součást cesty jako argumentu příkazu. Aktivuje se klávesou Tab (tabulátor). Volitelně zadáme začátek jména a stiskneme Tab. Pokud existuje pouze jediná možnost doplnění (jediný existující soubor, adresář, program apod. s takto začínajícím jménem), celý zbytek jména je doplněn! Pokud je možností doplnění víc, je případně doplněn nejdelší společný začátek jména a při dalším stisku Tab je zobrazen seznam všech doplnění jména (formou tabulky)! Dopíšeme další znak(y) a zkusíme Tab znovu pro doplnění celého zbytku jména. Pokud je seznam (tabulka) větší než co se vleze na obrazovku terminálu, může být jeho zobrazení pozastaveno po první obrazovce – další část (obrazovku) zobrazíme stiskem klávesy mezerník, nebo zobrazení ukončíme pomocí q. A pokud je seznam velký příliš, může se ještě před zobrazením jeho první části objevit dotaz na toto zobrazení, s možnými odpověďmi y pro ano a n pro ne. Pokud chceme do příkazového řádku zadat samotný znak tabulátoru, musíme použít kombinaci C-v TAB, tj. TAB po C-v.

– Úkol 5:
Při zadávání příkazů, jmen programů a souborů nebo adresářů stiskněte (opakovaně) klávesu Tab!

Obsah souboru

V terminálu si můžeme zobrazit obsah jakéhokoliv souboru (nejen obsah např. manuálové stránky), ale vzhledem k tomu, že jde o textový terminál, je zde bezpečné zobrazovat pouze textové soubory (tzv. plain text, více v osmém cvičení, soubory typicky s příponou jména .txt, konfigurační, logovací aj.). Případné speciální netextové znaky mohou terminál nepříjemně ovlivnit (zobrazení znaků v terminálu, jeho chování aj.). Nejjednodušší program pro zobrazení (výpis) obsahu souboru v (do) terminálu je cat, kde cestu k souboru mu zadáme jako argument, např. cat public_html/welcome.html. Pokud je ale obsah souboru větší než co se vleze na obrazovku terminálu, předchozí obsah vyroluje a v terminálu zůstane jen konec obsahu velikosti obrazovky. K němu se sice můžeme vrátit (skrolováním terminálu), ale komfortnější je si obsah souboru na obrazovce terminálu prohlížet interaktivně, stejně jako manuálové stránky, programem less: less public_html/welcome.html. Jeho základní ovládání jsme si již uvedli u popisu manuálových stránek a jejich prohlížeče man, protože ten používá less. Pokud si (pouze textovým) obsahem souboru nejsme jisti nebo jen chceme napovědět, jakého typu obsah je ("co je soubor zač"), může se hodit program file. Ten se snaží typ obsahu souboru (zadaného mu jako argument) identifikovat s využitím své "databáze" charakteristik a typických částí obsahu (signatur).

– Úkol 6:
Pomocí (grafického) textového editoru (např. aplikace Textový editor nebo Gedit) upravte obsah souboru welcome.html v adresáři public_html ve vašem domovském adresáři (na serveru phoenix.inf.upol.cz je tento soubor interpretován jako webová stránka dostupná na adrese http://phoenix.inf.upol.cz/~login, kde login je uživatelské jméno).

Úkol 7:
Zobrazte obsah souboru welcome.html z předchozího úkolu (programy cat, less).

Kopírování, přesun a mazání souborů a adresářů

Pro kopírování a přesun (plus přejmenování, technicky je to totéž co přesun) souborů a adresářů jsou v unixových systémech standardní programy cp a mv. Akceptují minimálně dvě cesty jako argumenty, všechny kromě poslední chápané jako existující zdroje ("co") a poslední jako případně neexistující cíl ("kam"). Pokud je zdroj zadaný jeden, nemůže to (přirozeně) být cesta k adresáři a současně cíl cesta k existujícímu souboru, a cíl nemusí existovat – tzn. kopie nebo přejmenování zdroje na cíl, jinak při existenci cíle kopie nebo přesun zdroje do cíle. Pokud je zdrojů zadaných víc než jeden, cíl pak musí být cesta k existujícímu adresáři. V případě kopie zdroje jako cesty k adresáři je pak nutné, pro kopii celého adresáře včetně jeho obsahu (i prázdného), doplnit přepínač -r (recursive): cp -r adresář cíl. Pro mazání je standardní program rm, kterému se jako argumenty rovněž předávají cesty a pokud je to cesta k adresáři, pak je opět pro výmaz celého adresáře včetně jeho obsahu (i prázdného – pouze takový lze smazat i programem rmdir) nutné přidat přepínač -r: rm -r adresář.

Programy cp, mv a rm mají společné "klasické" přepínače -i, -f a -v. Přepínač -i (interactive) zapíná tzv. interaktivní režim, což znamená, že před každou operací, při které by mohlo dojít ke ztrátě dat (přepsáním nebo vymazáním souboru nebo adresáře) se program nejdříve dotáže na svolení operaci provést (s možnými odpověďmi y pro ano a n pro ne). To podporuje bezpečné provádění operací (v unixových systémech standardně neexistuje možnost obnovení přepsaných nebo smazaných souborů a adresářů!) a v linuxových distribucích bývá tento přepínač při vykonávání těchto programů často automaticky doplňovaný. Na druhou stranu například ve spojení s přepínačem -r takových dotazů nemusí být málo (navíc zde jsou ještě dotazy pro vstup do každého (pod)adresáře). Proto přepínač -f (force) naopak veškeré dotazy potlačuje, což ovšem může být nebezpečné. Přepínač -v (verbose) pak zapíná tzv. "ukecaný" režim, kdy je uživatel o každé jednotlivé operaci informován výpisem do terminálu.

Úkol 8:
Zkopírujte soubor welcome.html z předchozího úkolu na soubor index.html, ten přejmenujte na main.html a poté tento smažte (s volbami postupně -i s odpovědí ne na výmaz a -f). Zkopírujte adresář public_html na adresář web a poté tento smažte.

Přenos souborů na/z linuxového serveru – scp

Spolu s programem ssh pro vzdálené připojení k linuxovému serveru v textovém terminálu bývá typicky distribuován i program scp (secure copy) pro kopírování souborů a adresářů na/ze vzdáleného unixového serveru. Jeho základní použití je stejné jako u cp, včetně přepínače -r, jen pro zadání cesty na vzdáleném serveru před ni přidáme síťové jméno serveru, případně i s uživatelským jménem (login) stejně jako u SSH klienta ssh, oddělené od cesty : (dvojtečkou), tedy ve tvaru login@server:cesta. Aktuálním adresářem (pro relativní cestu) na serveru po připojení na něj je domovský adresář uživatele na serveru a tento je také výchozí, pokud není za : uvedena žádná cesta. Se samotným připojením na server (přihlášením, zadáním hesla) je to stejné jako u ssh, akorát pokud není u cesty na vzdálený server zadaná část login@, výchozí je jméno (login) uživatele, který program spouští, a jméno se nezadává. Například tedy pro linuxový server phoenix.inf.upol.cz příkaz scp login@phoenix.inf.upol.cz:public_html/welcome.html . zkopíruje (stáhne, download) soubor welcome.html v podadresáři public_html domovského adresáře uživatele jménem login ze serveru do aktuálního adresáře na místním systému. Naopak pro kopii z místního systému na server (nahrání, upload) bude cesta na serveru (se jménem serveru) zadaná jako poslední argument.

Úkol 9:
Pomocí programu scp zkopírujte soubor welcome.html z předchozího úkolu pod svým uživatelským jménem na server phoenix.inf.upol.cz do souboru /tmp/login.html (kde login je vaše uživatelské jméno) a poté tento soubor zkopírujte zpět ze serveru do adresáže /tmp na místním systému.

Vyhledávání souborů a adresářů

Různé možnosti vyhledávání souborů a adresárů poskytuje v unixových systémech program find. Jako první argument (až na některé přepínače) mu zadáváme cestu k adresáři, ve kterém má vyhledávat (tj. v jeho obsahu, adresářovém podstromu), jako další argumenty potom testy (kritéria), podle kterých má vyhledávat. Jeho výchozím výstupem do terminálu jsou cesty (relativní k zadanému adresáři) k nalezeným souborům nebo adresářům vyhovujícím zadaným testům. Pro možné testy viz manuálovou stránku programu, man find, testy se zadávají ve tvaru přepínačů (název testu za -) s hodnotou: -test hodnota. Například pomocí find . -name vzor můžeme v aktuálním adresáři vyhledat soubory nebo adresáře, jejichž jméno odpovídá vzoru (o vzorech shellu pro jména si řekneme v šestém cvičení), kde jednoduchý vzor je obyčejný textový řetězec (bez speciálních znaků *?[] pro vzor). Varianta -iname vzor nerozlišuje u vzoru/jmen velikost písmen. Test -size velikost je pro velikost souboru, číselná hodnota velikost může mít příponu k, M, G pro 1024-násobky bytů a c pro byty (pozor, ne b, to je pro 512 bytů a je výchozí bez přípony). Velikost souboru musí odpovídat přesně zadané hodnotě, což obvykle nechceme, proto před ni můžeme zadat i znaky - (mínus) pro hodnotu/velikost i menší a + (plus) pro i větší. Podobně je to například i s testem -mtime dní pro čas poslední změny obsahu souboru (nebo adresáře), jehož hodnotou je počet dní do minulosti od aktuálního času (tedy větší hodnota znamená více do minulosti). Existují i testy -mmin minut pro hodnotu v minutách nebo -atime/-amin pro čas posledního přístupu k souboru. Nebo můžeme testovat (obyčejný) soubor, testem -type f, nebo adresář, -type d. Další testy jsou třeba pro uživatelská práva souboru/adresáře nebo uživatele jako jeho vlastníka, ale tyto záležitosti si představíme až v příštím pátém cvičení. Více zadaných testů musí být splněných současně (konjunktivně), ale mezi testy je možné úvést i přepínač -o (nebo -or) pro disjunktivní splnění testů nebo před testem uvést \! (-not) pro jeho negaci.

Úkol 10:
Vyhledejte všechny soubory ve vašem domovském adresáři větší než 1 kB a současně nezměněné dříve než jeden den zpět.

Dodejme ještě, že kromě testů můžeme programu find zadat jako argumenty i akce, které má s nalezenými soubory nebo adresáři rovnou provést. Například formátovaný výpis mnoha různých informací o nich (nejen cesty k nim, -printf formát), smazání (-delete) nebo rovnou vykonání libovolného příkazu nad nimi (-exec příkaz \;), ale zde už odkážeme na manuálovou stránku programu.

Cvičení 5


Úkol 1:
Vytvořte symbolický odkaz index.html na kopii souboru welcome.html, kopii smažte, opět vytvořte a pak smažte odkaz. Mezi kroky si zobrazte obsah adresáře s odkazem a soubory s podrobnějšími informacemi (o odkazu).

Úkol 2:
Zobrazte skupiny, do kterých (váš) uživatel patří, a obsah adresáře s informacemi o vlastnících, skupinách a právech souborů a podadresářů.

Úkol 3:
Odeberte souboru welcome.html právo zápisu (vlastníkovi) a zkuste do něj zapsat (např. programem gedit), právo čtení a zobrazit jeho obsah, poté práva souboru vraťte.

Úkol 4:
Odeberte adresáři public_html právo vstupu (všem uživatelům) a zkuste zobrazit jeho obsah a vstoupit do něj, poté právo vraťte a odeberte právo čtení a opět zkuste zobrazit jeho obsah a vstoupit do něj, pak opět právo vraťte.

Úkol 5:
Nastavte všechna práva vlastníkovi a pouze právo vstupu skupině a ostatním uživatelům adresáři ~/public_html (v domovském adresáři).

– Úkol 6:
Zkuste v adresáři /tmp vytvořit soubor a smazat cizí soubor.

Úkol 7:
Připojte USB flash disk, zobrazte informaci o obsazeném a volném místě na něm (program df).

Cvičení 6


Úkol 1:
Zobrazte výpis všech procesů vašeho a jiného uživatele, všechny procesy v systému, dále ve stromové struktuře a nakonec pouze s informací o PID a příkazu procesu.

Úkol 2:
Spusťte (grafický) program gnome-calculator, získejte PID jeho procesu a programem kill jej pozastavte (a zkuste jej ovládat), pak rozběhněte a ukončete. Spusťte jej poté znovu, z terminálu, a zavřete okno terminálu.

Úkol 3:
Spusťte (grafické) programy gnome-calculator a gnome-mines (v terminálu), první tzv. na pozadí a druhý tzv. na popředí. Druhý přesuňte na pozadí a první na popředí. Pak první ukončete (zavřete okno) a ukončete shell v terminálu (korektně, např. příkazem exit).

Úkol 4:
Zobrazte seznam všech souborů a podadresářů v adresáři /dev se jménem začínajícím ttycifracokoliv, kde cifra je 0 až 9, a ttynecifracokoliv, kde necifra není 0 až 9, a cokoliv je jakýkoliv řetězec.

Úkol 5:
Vytvořte soubory (např. pomocí programu touch) se jmény * * * (včetně obou dvojic mezer mezi *) a "1 & 2" (včetně obou ").

Cvičení 7


Úkol 1:
Zapište do souboru, (pouze) pomocí programu cat, text zadaný na vstupu terminálu a poté ještě přidejte text zapsaný přímo v příkazovém řádku.

Úkol 2:
Uložte výstup programu date do souboru a pak do něj přidejte výpis všech procesů v systému.

Úkol 3:
Zobrazte výstup programu date a výpis všech procesů v systému současně v programu less.

Úkol 4:
Přidejte do seznamu cest v proměnné shellu PATH aktuální adresář (.) a proměnnou exportujte.

Úkol 5:
Zobrazte, s využitím programu date (a jeho manuálové stránky, konkrétně pak i přepínače -d 12/24), počet dní zbývajících do Štědrého dne (24. 12.) aktuálního roku.

Cvičení 8


Úkol 1:
Změňte kódování textu na vstupu z UTF-8 na cp1250, používaném na MS Windows, včetně správných konců řádků (na unixových systémech a MS Windows), a opačně.

– Úkol 2:
Vytvořte v textových editorech vim (vi), emacs (jed) a nano (pico) tabulku s několika řádky a sloupci (oddělenými např. tabulátorem) a vyzkoušejte si operace mazání znaků, slov, částí řádku, více řádků, kopírování a vložení částí řádku a několika řádků, undo a redo, vyhledání a náhrady řetězce za jiný a práci s více soubory a okny (otevření, zavření/uložení, přepínání).

– Úkol 3:
Vyzkoušejte (v příkazové řádce) klávesu C-x C-e a příkaz fc (včetně vyvolání příkazu začínajícího nějakým řetězcem).

Cvičení 9


Úkol 1:
Zobrazte očíslované řádky vstupu od 10. do 20. řádku včetně v opačném pořadí řádků.

Úkol 2:
Setřiďte (tabulkový) výstup programu df podle volného místa (čtvrtý sloupec) číselně sestupně.

Úkol 3:
Setřiďte výstup programu history podle příkazu, s odstraněním duplicitních příkazů (čísla příkazů ponechat).

Úkol 4:
Pomocí programů cut a paste prohoďte v tabulkovém vstupu (více než dva sloupce oddělené např. tabulátorem) první a druhý sloupec.

Úkol 5:
Zobrazte počet skupin, do kterých (váš) uživatel patří.

Úkol 6:
Zobrazte na jednom řádku seznam všech uživatelů, pod kterými běží v systému alespoň jeden proces.

Cvičení 10


Úkol 1:
V textových editorech vim (vi), emacs (jed) a nano (pico) vyhledejte na základě regulárního výrazu čísla, i necelá s případně desetinnou čárkou a necelou částí, následovaná mezerami a jednotkou B, kB, MB, GB nebo TB.

Úkol 2:
Změňte velikosti všech písmen na vstupu z malých na velká.

Úkol 3:
Zobrazte pouze řádky souboru, které nejsou v jiném souboru, tj. rozdíl souborů (jako rozdíl množin).

Úkol 4:
Zobrazte pouze řádky vstupu obsahující číslo zapsané v šestnáctkové soustavě začínající 0x (s malými i velkými písmeny).

Úkol 5:
Zobrazte seznam pouze souborů a adresářů s letošním datem modifikace.

Úkol 6:
Zobrazte pouze řádky vstupu, které neobsahují dvě stejná čísla.

Cvičení 11


Úkol 1:
Odstraňte ze vstupu mezery na koncích řádků.

Úkol 2:
Zobrazte ze vstupu pouze všechna čísla, i necelá s případně desetinnou čárkou a necelou částí, každé na samostatný řádek.

Úkol 3:
Pomocí programu sed prohoďte v tabulkovém vstupu (více než dva sloupce oddělené např. tabulátorem) první a druhý sloupec.

Úkol 4:
Zobrazte ze vstupu, ve kterém některé řádky představují nadpisy uvozené číslováním 1., 1.1, 1.1.1 atd., pouze tyto nadpisy, bez číslování a ve stromové struktuře -- odsazením levého okraje podnadpisů od levého okraje nadřazeného nadpisu mezerou.

Cvičení 12


Úkol 1:
Pomocí programu awk zobrazte z tabulkového vstupu (sloupce oddělené např. tabulátorem) pouze dva sloupce specifikované v proměnných předaných awk při jeho spuštění.

Úkol 2:
Zobrazte, ze souboru /etc/passwd, seznam uživatelů ve tvaru login tabulátor plné jméno uživatele.

Úkol 3:
Z čísel ve sloupci v tabulkovém vstupu (sloupce oddělené např. tabulátorem) spočítejte jejich průměr.

Úkol 4:
Zobrazte ze vstupu obsahujícího (i vnořené) bloky textu začínající řádkem obsahujícím pouze slovo START a končící řádkem obsahujícím pouze slovo END pouze text bloků první úrovně (tj. není mimo bloky ani ve vnořených blocích).