daląí předchozí obsah
Daląí: Programátorské základy Předchozí: Seznam tabulek

  Uľivatelské základy unixu





Úvod

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.



  Přihláąení do systému

Pro přihláąení k systému je potřeba uvést své uľivatelské jméno a heslo. Tyto údaje jsou porovnány se záznamy v souboru /etc/passwd. Pro představu zde uvedu ukázku tohoto souboru:

    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".



Online manuál v unixu -- man

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.



Rychlý start do unixu



Základní příkazy

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
Tabulka 1: Ekvivalenty některých DOSových příkazů

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
Tabulka 2: Daląí uľitečné unixové příkazy



Editory

Programátor často pouľívá nějaké textové editory, proto je dobré vědět, jak se jmenují a co umí:

vi
je editor, který se objevuje snad ve vąech instalacích unixu. Je proto dobré se naučit alespoň jeho základní příkazy (např. ESC :x je ukončení s uloľením souboru a ESC :q! je ukončení bez uloľení). Pro daląí seznámení (i v čeątině) mohu doporučit [9].
joe
má ovládání téměř jako známý editor Word Star. (Ale pro jistotu ^K H je help). Tento editor je volně ąířitelný i se zdrojovým kódem.
emacs
Emacs není editor -- Emacs, to je náboľenství. Je napsán v jazyku LISP a jde do něj přidat spousta funkcí. Tento editor je také volně ąířitelný.



  Shell

Shell plní podobnou funkci jako v DOSu program command.com -- tj. čte příkazy z terminálu nebo ze souboru a provádí je.

Nejznámějąími variantami shellu jsou (řazeny dle data vzniku):



Rychlý úvod do shellu

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
Tabulka 3:Speciální znaky v shellu


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
Tabulka 4: Speciální znaky -- příklady


 

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ąąí
Tabulka 5: Příkazy -- příklady



Cvičení

  1. V jazyce příkazového interpretru shell napiąte program, který zjistí počet dopisů v souboru mailboxu. Jako standardní mailbox povaľujte soubor /var/spool/mail/username. Přidejte moľnost zadání alternativního souboru mailboxu. Uvaľujte, ľe v jednom dopise se jen jednou objevuje řetězec From: na začátku řádku.


daląí předchozí obsah
Daląí: Programátorské základy Předchozí: Seznam tabulek

Ladislav Dobias
Sat Nov 1 15:38:32 MET 1997