Cela tato prace je zamerena na prakticke zvladnuti programovani pod unixem. Proto i v teto kapitole najdete jen strucny popis toho, co je potrebne zvladnout, abyste pozdeji mohli postoupit bez problemu k programovani.
Proto zde popiseme, jak se do systemu prihlasit, jak ziskat on-line napovedu, jake jsou casto pouzivane prikazy, jake existuji editory. V dalsi casti popiseme zakladni praci s unixovym 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
Zaznamy jsou cele radky, polozky v zaznamech jsou oddeleny dvojteckou,
vyznam polozek je takovyto:
| username | : | password | : | UID | : | GID | : | poznamka | : | domovsky adresar | : | shell |
Heslo je zakodovane standardni funkci crypt(3). Pokud je v polozce hesla hvezdicka, znamena to, ze uzivatel nema pristup do systemu; pokud tam nic neni, uzivatel se prihlasi bez hesla. UID je cislo uzivatele; GID je cislo skupiny, do ktere je uzivatel pri prihlaseni zarazen. shell urcuje, ktery shell se spusti pri prihlaseni (O shellu viz kap. Shell). Sluzbami pro praci s timto souborem se zabyva kapitola "Systemove soubory a informace".
Popis prikazu, funkci, volani jadra, atd. lze ziskat z tzv. manualovych stranek. K nim se lze dostat pomoci prikazu man.
Manualove stranky jsou rozdeleny do nekolika casti. Napr. cast 1 obsahuje popis uzivatelskych prikazu, cast 2 systemovych volani, cast 6 obsahuje manualy k hram, cast 8 popis systemovych prikazu.
Vyvolani manualu napr. k prikazu ls lze provest napsanim man 1 ls (popis prikazu ls je v sekci 1) nebo jen man ls.
Pokud nevime presne, jak se dana manualova stranka jmenuje, pouzijeme prikaz man -k klicove slovo, napriklad man -k configur vypise ruzne prikazy a soubory, ktere slouzi k nejake konfiguraci.
Pro rychly prechod z DOSu do unixu uvadime tabulku pribliznych ekvivalentnich prikazu. Viz tabulku 1.
| DOS | unix | Strucny popis |
|---|---|---|
| attrib | chmod | zmena atributu souboru |
| copy | cp | kopirovani souboru |
| date | date | zobrazeni data |
| del | rm | mazani souboru |
| dir | ls -la | vypis adresare |
| echo | echo | zobrazeni retezce |
| fc | diff | porovnani souboru |
| help | man | napoveda o prikazu/programu/funkci/souboru |
| mkdir | mkdir | vytvoreni adresare |
| more | more | prohlizeni souboru po strankach |
| ren | mv | prejmenovani/presunuti |
| rmdir | rmdir | smazani adresare |
| sort | sort | setrideni souboru |
| time | date | zobrazeni casu |
| type | cat | vypisovani obsahu souboru |
V tabulce 2 jsou uvedeny nektere dalsi uzitecne unixove prikazy.
| Prikaz | Strucny popis |
|---|---|
| awk | umi ruzne pracovat s textovymi soubory |
| cat | vypisuje obsah danych souboru |
| compress | komprimuje soubor |
| cut | vybira urcite casti (napr. sloupce) souboru |
| df | zobrazuje volne misto na zarizenich (discich) |
| du | ukazuje, kolik mista zabiraji soubory/adresare |
| expr | pocita matematicke vyrazy |
| file | hada typ souboru podle jeho obsahu |
| find | hleda soubory dle danych kriterii |
| grep | mj. vybira ze souboru dane radky |
| head | vypisuje zacatek souboru |
| kill | posle procesu signal (o signalech viz kap. Signaly) |
| ln -s | vytvari symbolicky link (odkaz na soubor) |
| make | ulehcuje kompilaci a sestavovani programu v C |
| mount | pridava zarizeni do filesystemu |
| nroff | formatuje text, napr. manualove stranky |
| passwd | meni heslo |
| ps | vypisuje bezici procesy |
| pwd | vypisuje aktualni adresar |
| sed | neinteraktivni (proudovy) editor |
| sleep | ceka dany cas |
| stty | nastavuje parametry terminalu |
| sum | pocita CRC souboru |
| tail | vypisuje konec souboru |
| tar | archivuje soubory |
| tee | vypisuje na standardni vystup a do souboru |
| test | test pouzivany hlavne podminkach a cyklech |
| tr | nahrazuje znaky jinymi znaky |
| uname | napise jmeno systemu |
| uncompress | rozbaluje soubor |
| wc | pocita radky/slova/bajty |
| who | vypisuje prihlasene uzivatele |
| whoami | vypise, jak se jmenujeme v systemu |
| which | napise odkud se spousti dany program |
Programator casto pouziva nejake textove editory, proto je dobre vedet, jak se jmenuji a co umi:
Nejznamejsimi variantami shellu jsou (razeny dle data vzniku):
V shellu maji jiste znaky specialni vyznam. Pro rychlou orientaci v techto znacich je pripravena tabulka 3.
Krome externich prikazu jdou v shellu pouzivat i vestavene prikazy, napr. cd, if, while, read, ...Jejich popis lze nalezt opet v manualovych strankach (napr. man ksh).
| Specialni znaky | Vyznam |
|---|---|
| | | roura (pipe) --- razeni prikazu do kolony |
| & | spusteni na pozadi |
| ; | ukonceni prikazu |
| ( ) | spusteni v kopii shellu |
| > | presmerovani standardniho vystupu |
| < | presmerovani standardniho vstupu |
| && | spusteni pri nulovem navratovem kodu |
| || | spusteni pri nenulovem navratovem kodu |
| $ | umoznuje pristup k promennym |
| * ? [ ] | znaky pro expanzi jmen |
| \ | potlacuje vyznam nasledujiciho specialniho znaku |
| ' ' | potlacuje vyznam specialnich znaku |
| " " | potlacuje vyznam specialnich znaku az na \, $ a ` ` |
| ` ` | vrati standardni vystup prikazu |
Nektere specialni znaky si spolu s jiz uvedenymi prikazy ukazeme na prikladech -- viz tab. 4 a tab. 5.
| who | wc -l | vypise pocet prihlasenych uzivatelu |
| sh -c 'sleep 5;date'& echo Date: | vypise Date: a po 5 sekundach datum a cas |
| cd;pwd(cd /etc;pwd)pwd | vypise nazev domovskeho adresare, pak /etc a pak zase domovsky adresar |
| tr ay ya <in | tee out | v souboru in prohodi znaky a a y a vysledek vypise na obrazovku a do souboru out |
| read DIR; test -d $DIR && echo $DIR je adresar | zjisti, zda $DIR je adresar |
| tar cvf - $*$.[ch] | compress >etc.tar.Z | zabali a zkompresuje soubory v aktualnim adresari koncici na .c a .h |
| cat a b c > d | spoji soubory a, b, c do souboru d |
| du -s $HOME | ukaze, kolik mista zabiraji nase data |
| find /etc -name '*' -exec grep -l xdobiasl {} \; | vypise soubory v adresari /etc, ktere obsahuji dane slovo (vypise asi /etc/passwd) |
| more `which startx` | vypise soubor, kterym se spousti X Window |
| for i in *; do echo "Balim $i"; compress $i; done | v aktualnim adresari zkompresuje kazdy soubor zvlast |
| expr `cat /etc/passwd | sort -t : -k 3 -n | tail -1` + 1 | vypise UID o jednicku vyssi, nez je v systemu nejvyssi |
Ladislav Dobias