Celá tato práce je zaměřena na praktické zvládnutí programování pod unixem. Proto i v této kapitole najdete jen stručný popis toho, co je potřebné zvládnout, abyste později mohli postoupit bez problémů k programování.
Proto zde popíšeme, jak se do systému přihlásit, jak získat on-line nápovědu, jaké jsou často používané příkazy, jaké existují editory. V další části popíšeme základní práci s unixovým shellem.
root:C6JbDfHXftBkk:0:0:root:/root:/bin/bash
ftp:*:14:50:FTP User:/home/ftp:
xdobiasl::500:100:Ladislav Dobias:/home/xdobiasl:/bin/bash
Záznamy jsou celé řádky, položky v záznamech jsou odděleny dvojtečkou,
význam položek je takovýto:
| username | : | password | : | UID | : | GID | : | poznámka | : | domovský adresář | : | shell |
Heslo je zakódované standardní funkcí crypt(3). Pokud je v položce hesla hvězdička, znamená to, že uživatel nemá přístup do systému; pokud tam nic není, uživatel se přihlásí bez hesla. UID je číslo uživatele; GID je číslo skupiny, do které je uživatel při přihlášení zařazen. shell určuje, který shell se spustí při přihlášení (O shellu viz kap. Shell). Službami pro práci s tímto souborem se zabývá kapitola "Systémové soubory a informace".
Popis příkazů, funkcí, volání jádra, atd. lze získat z tzv. manuálových stránek. K nim se lze dostat pomocí příkazu man.
Manuálové stránky jsou rozděleny do několika částí. Např. část 1 obsahuje popis uživatelských příkazů, část 2 systémových volání, část 6 obsahuje manuály k hrám, část 8 popis systémových příkazů.
Vyvolání manuálu např. k příkazu ls lze provést napsáním man 1 ls (popis příkazu ls je v sekci 1) nebo jen man ls.
Pokud nevíme přesně, jak se daná manuálová stránka jmenuje, použijeme příkaz man -k klíčové slovo, například man -k configur vypíše různé příkazy a soubory, které slouží k nějaké konfiguraci.
Pro rychlý přechod z DOSu do unixu uvádíme tabulku přibližných ekvivalentních příkazů. Viz tabulku 1.
| DOS | unix | Stručný popis |
|---|---|---|
| attrib | chmod | změna atributů souboru |
| copy | cp | kopírování souborů |
| date | date | zobrazení data |
| del | rm | mazání souborů |
| dir | ls -la | výpis adresáře |
| echo | echo | zobrazení řetězce |
| fc | diff | porovnání souborů |
| help | man | nápověda o příkazu/programu/funkci/souboru |
| mkdir | mkdir | vytvoření adresáře |
| more | more | prohlížení souboru po stránkách |
| ren | mv | přejmenování/přesunutí |
| rmdir | rmdir | smazání adresáře |
| sort | sort | setřídění souboru |
| time | date | zobrazení času |
| type | cat | vypisování obsahu souboru |
V tabulce 2 jsou uvedeny některé další užitečné unixové příkazy.
| Příkaz | Stručný popis |
|---|---|
| awk | umí různě pracovat s textovými soubory |
| cat | vypisuje obsah daných souborů |
| compress | komprimuje soubor |
| cut | vybírá určité části (např. sloupce) souboru |
| df | zobrazuje volné místo na zařízeních (discích) |
| du | ukazuje, kolik místa zabírají soubory/adresáře |
| expr | počítá matematické výrazy |
| file | hádá typ souboru podle jeho obsahu |
| find | hledá soubory dle daných kritérií |
| grep | mj. vybírá ze souboru dané řádky |
| head | vypisuje začátek souboru |
| kill | pošle procesu signál (o signálech viz kap. Signaly) |
| ln -s | vytváří symbolický link (odkaz na soubor) |
| make | ulehčuje kompilaci a sestavování programu v C |
| mount | přidává zařízení do filesystému |
| nroff | formátuje text, např. manuálové stránky |
| passwd | mění heslo |
| ps | vypisuje běžící procesy |
| pwd | vypisuje aktuální adresář |
| sed | neinteraktivní (proudový) editor |
| sleep | čeká daný čas |
| stty | nastavuje parametry terminálu |
| sum | počítá CRC souboru |
| tail | vypisuje konec souboru |
| tar | archivuje soubory |
| tee | vypisuje na standardní výstup a do souboru |
| test | test používaný hlavně podmínkách a cyklech |
| tr | nahrazuje znaky jinými znaky |
| uname | napíše jméno systému |
| uncompress | rozbaluje soubor |
| wc | počítá řádky/slova/bajty |
| who | vypisuje přihlášené uživatele |
| whoami | vypíše, jak se jmenujeme v systému |
| which | napíše odkud se spouští daný program |
Programátor často používá nějaké textové editory, proto je dobré vědět, jak se jmenují a co umí:
Nejznámějšími variantami shellu jsou (řazeny dle data vzniku):
V shellu mají jisté znaky speciální význam. Pro rychlou orientaci v těchto znacích je připravena tabulka 3.
Kromě externích příkazů jdou v shellu používat i vestavěné příkazy, např. cd, if, while, read, ...Jejich popis lze nalézt opět v manuálových stránkách (např. man ksh).
| Speciální znaky | Význam |
|---|---|
| | | roura (pipe) --- řazení příkazů do kolony |
| & | spuštění na pozadí |
| ; | ukončení příkazu |
| ( ) | spuštění v kopii shellu |
| > | přesměrování standardního výstupu |
| < | přesměrování standardního vstupu |
| && | spuštění při nulovém návratovém kódu |
| || | spuštění při nenulovém návratovém kódu |
| $ | umožňuje přístup k proměnným |
| * ? [ ] | znaky pro expanzi jmen |
| \ | potlačuje význam následujícího speciálního znaku |
| ' ' | potlačuje význam speciálních znaků |
| " " | potlačuje význam speciálních znaků až na \, $ a ` ` |
| ` ` | vrátí standardní výstup příkazu |
Některé speciální znaky si spolu s již uvedenými příkazy ukážeme na příkladech -- viz tab. 4 a tab. 5.
| who | wc -l | vypíše počet přihlášených uživatelů |
| sh -c 'sleep 5;date'& echo Date: | vypíše Date: a po 5 sekundách datum a čas |
| cd;pwd(cd /etc;pwd)pwd | vypíše název domovského adresáře, pak /etc a pak zase domovský adresář |
| tr ay ya <in | tee out | v souboru in prohodí znaky a a y a výsledek vypíše na obrazovku a do souboru out |
| read DIR; test -d $DIR && echo $DIR je adresář | zjistí, zda $DIR je adresář |
| tar cvf - $*$.[ch] | compress >etc.tar.Z | zabalí a zkompresuje soubory v aktuálním adresáři končící na .c a .h |
| cat a b c > d | spojí soubory a, b, c do souboru d |
| du -s $HOME | ukáže, kolik místa zabírají naše data |
| find /etc -name '*' -exec grep -l xdobiasl {} \; | vypíše soubory v adresáři /etc, které obsahují dané slovo (vypíše asi /etc/passwd) |
| more `which startx` | vypíše soubor, kterým se spouští X Window |
| for i in *; do echo "Balim $i"; compress $i; done | v aktuálním adresáři zkompresuje každý soubor zvlášť |
| expr `cat /etc/passwd | sort -t : -k 3 -n | tail -1` + 1 | vypíše UID o jedničku vyšší, než je v systému nejvyšší |
Ladislav Dobias