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