Základní pojmy a příkazy operačního systému UNIX Tato přednáška se věnuje jen úplným základům UNIXu, pro zájemce je na FI MU k dispozici celá řada přednášek. Při studiu UNIXu jsou výhodou základní znalosti operačního systému MSDOS (command.com) a běžné práce v prostředí MS Windows. Unix je multiuživatelský (zároveň může na jednom počítači pracovat celá řada uřivatelů) a multiprocesový (též nazývaný multitaskingový - může zpracovávat několik úloh jakoby paralelně) systém. Pokud jste se úspěšně přihlásili do systému, objeví se před vámi uvozovací znak příkazového interpretu -- $ (nebo >). plch@bart:~/vyuka/tex> To, co vidíte, je příkazový řádek. (Spustil se program zvaný příkazový interpret (shell), který zpracovává vámi zadané příkazy. Nejčastěji používané příkazy Adresáře Celý systém souborů představuje sadu cest adresářů (podobně jako v DOSu), které se větví z kořenového (root) adresáře. Adresáře dále obsahují jednotlivé soubory nebo další adresáře. Kořenový adresář: "/" (lomítko) (v DOSu zpětné lomítko \), znak "/" se používá také ve jménech cest jako oddělovač jmen adresářů nebo souborů. Pro seznam adresářů oddělených lomítky se používá termín path (cesta). Úplné jméno souboru: i s cestou od kořenového adresáře k danému souboru Př.: DOS: \PROGRAS\C++\SOURCES\HELLO.CPP Linux: /home6/quido/papers/geology/paper1.txt Takové cestě se říká absolutní a poznáte ji podle toho, že začíná lomítkem - symbolem kořenového adresaře. Relativní cesta, jejíž zápis nezačíná lomítkem, vychází vždy z pracovního adresáře. Změníte-li pracovní adresář, bude stejná relativní cesta ukazovat na jiný soubor nebo (častěji) způsobí chybu, protože povede do prázdna. . pracovní adresář .. rodičovský (nadřazený adresář) Tyto položky obsahuje každý adresář (kromě kořenového). Při přihlášení do Unixu má každý uživatel určitý domovský adresář. Ten je obvykle nastaven jako platný (aktuální, pracovní) adresář, zkratka pro jméno domovského adresáře je ~. Změna aktuálního adresáře $ cd adresar $ cd příkaz cd bez argumentů vás vrátí do domovského adresáře. Domovský adresář je zpravidla uveden znakem tilda (~). Proto ~/programs znamená, že programs je uložen ve vašem domovském adresáři. Vytvoření adresáře: $mkdir programs nebo $mkdir /home4/plch/programs Rušení adresáře: $rmdir programs (pouze prázdného) $rm -r programs (maže adresář i se soubory v něm - používejte opatrně) Zobrazení seznamu souborů $ls $ls /home6 $ls -a $ls -l Nahrazovací (žolíkové) znaky - díky nim můžete říci, že vám na určité části jména nezáleží. ? jeden libovolný znak * libovolný řetězec znaků (nevztahuje se na skryté soubory) Rozšiřování jmen souborů: (nahrazovací znaky) $ ls l?.jpg ? - nahrazuje jeden znak $ ls l[13].jpg nezajímá nás druhý soubor $ls l[1-3].jpg jakákoli číslice [0-9] jakýkoliv alfanumerický znak [a-zA-Z] $ls l* * - žádný nebo více znaků UNIX umožňuje jakýmkoliv způsobem kombinovat pseudoznaky a normální znaky $ls *.[mn][ab] Analogie DOS - Linux (příklady): DOS Linux dir ls dir file.txt ls file.txt dir *.cls *.c ls *.cls *.c dir /p ls | more cd \other cd /other cd ..\temp\trash cd ../temp/trash md newprogs mkdir newprogs rd newprogs rmdir newprogs Práce se soubory: Všechna data (informace) jsou uložena v souborech. Abyste se soubory mohli pracovat, musíte jim přidělit jméno. Typické jméno souboru je složeno z vlastního jména a jedné či několika přípon oddělených tečkami. Vlastní jméno charakterizuje obsah - čeho se daný soubor týká, naproti tomu přípony napovídají, v jakém formátu je soubor uložen. Přípony jsou pouhou konvencí, jejich přítomnost není povinná, ale na druhé straně může mít soubor hned několik přípon. Př.: editor.tar.gz V DOSu omezení délky jména souboru na 8 znaků pro jméno a 3 znaky pro extenzi, v Linuxu toto omezení neplatí, pozor! rozlišuje se mezi velkými a malými písmeny. Soubory začínající tečkou jsou tzv. skryté soubory. Přepínače příkazu nejsou uvozeny pomocí /přepínač, ale -přepínač. Př.: dir /s kontra ls -R DOS Linux COPY cp DEL rm REN mv TYPE more, less, cat Pozor: Neexistuje příkaz UNDELETE, tedy smazání souboru si řádně rozmyslete. Prohlížení souborů (obsahu souborů): Jakého typu jsou data, které soubor obsahuje, nám obvykle naznačí přípona. Soubor však příponu nemusí mít nebo je chybná. Spolehlivější informaci o obsahu suboru poskytuje příkaz file. Jako parametry mu předáte názvy souborů, které vás zajímají. File analyzuje jejich obsah (prvních 512 slabik souboru) a vypíše, co zjistil. Př.: file * Chceme-li si prohlédnout obsah textového souboru, můžeme použít příkaz cat. Parametrem je jméno souboru, jehož obsah cat vypíše na obrazovku. $cat soubor Konfortnějšími jsou ale přikazy more a less. $more dopis.txt Po stisknutí mezerníku program zobrazí následující obrazovku.posun vpřed o 1 řádek q nebo Q ukončení programu / hledání řetězce znaků n další výskyt řetězce (vpřed) N další výskyt řetězce (vzad) h nápověda Less se chová velmi podobně, ale má poněkud pohodlnější ovládání, reaguje i na kurzorové klávesy a PgUp a PgDown (tj. umí se na rozdíl od programu more vrátit i zpět). Editor: $joe soubor $ gedit& $ kate& Všechny tyto příkazy je možno používat pouze pro textové soubory! Použití na binární soubor může změnit nastavení obrazovky tak, že bude nutno znovu nastavit parametry terminálu (uvidíte místo výzvy systému jen rozsypaný čaj - vyzkoušejte příkaz reset). Hledání Hledání souborů - find find kde co $ find /adresar1 /adresar2 -name soubor1 (-print) (hledá soubor se jménem soubor1 v adresářích /adresar1 a /adresar2) Při použití nahrazovacích znaků musíte jméno uzavřít do apostrofů (jednoduchých uvozovek). $find . -name '*.txt' Rychlejsi je prikaz locate. Neprohledava disk, ale specialni soubor, který obsahuje umístění souborů na disku. Důležité je, aby byl tento pravidelně aktualizován (provádí správce systému příkazem updatedb). locate soubor Hledání uvnitř souborů zajišťuje program grep. Jeho prvním parametrem je hledaný výraz a za ním pak následují jména souborů, které má prohledávat. $grep unix *.txt Výsledek má následující tvar: cz-net-rsrc.txt: networking, vendor (SCO, Sun, Cisco), X Windows, 386-unix cz-net-rsrc.txt: Contents: computer graphics, unix, SGI software Před dvojtečkou je uvedeno jméno souboru, za dvojtečkou řádek obsahující dotyčný řetězec. Pokud hledáte pouze v jednom souboru není jméno souboru a dvojtečka defaultně vypisována (dá se ovlivnit přepínačem) Nápověda Nápovědá shellu: $help man příkaz $man ls Text je zobrazován pomocí programu less (more), tj. je zejména možno využívat vyhledávání. $apropos edit Tento příkaz ukáže seznam všech manuálových stránek, které mají v stručném popisu uveden řetězec edit. (Prohledávají se řádky NAME). Místo apropos se dá použít často i man -k. Základní příkazy man prikaz - napoveda man man - napoveda k systemu napovedy cd adresář - změna aktuálního adresáře pwd - vypíše aktuální adresář ls [-alRd...] - vypis obsahu adresare mkdir dir1 dir2 ... - vytvoří adresáře rmdir adr1 adr2 ... - maze adresar, musi byt prazdny rm -r adresar - maze i neprazdny adresar (a jeho podadresare) cp s1 s2 cp spec adresář - kopíruje soubory mv - přesun nebo přejmenování souboru rm spec - maže soubory wc -l soubor - pocita radky v souboru -w - pocita slova v souboru -c - pocita znaky v souboru Editace příkazové řádky: Doplňování slov: $cd vy stiskněte Tab $cd vyuka $ema Dvojitým stiskem Tab se vypíší možná doplnění. Návrat k dříve zadným příkazům: "šipka nahoru", "šipka dolů"