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