Cvičení 3

Třídění, dělení a spojování souborů. Výpis po sloupcích. Filtry. Proudové editory. Editor vi. Editor GNU/Emacs. Spuštění X serveru. Vzdálené spouštění X klientů. Nastavení displaye. Základní metody autentisace. Nastavování aplikačních zdrojů. Práce se síťovými klienty. Přenos dat mezi počítači. Meziuživatelská komunikace.


1.  Práce s textovými soubory

V úvodní části hodiny si studenti procvičí používání textových utilit more(1), less(1), head(1), tail(1), cut(1), paste(1), sort(1), uniq(1), wc(1).

Programy more(1) a less(1) slouží k prohlížení obsahu textových souborů, přičemž druhý z nich má mnohem větší možnosti (třeba posun v textu zpět). Ukončují se stiskem klávesy q.

 $ less /etc/passwd

Programy head(1) a tail(1) vypíší prvních/posledních n řádků souboru.

 $ head -n 5 ~/MOTTO
 "Anything is good and useful if it's made of chocolate."

 "To Boot or not to Boot, that's the question." [WD1270 Caviar]

 The box said 'Requires Windows 95 or better', so I bought a Macintosh

Program cut(1) slouží k rozdělení souboru do sloupců. Příklad rozdělí soubor /etc/passwd podle sloupcového oddělovače „:“ a vypíše první a pátý sloupec.

 $ cut -d : -f 1,5 /etc/passwd
 root:root
 msql:Mini SQL Database Manager
 operator:Operator
 gnats:Gnats Bug-Reporting System (admin)
 novakj:Jan Novák
 ...

Inverzní program paste(1) naopak skládá sloupce z více souborů do jednoho výstupu.

 $ cat data
 prvni
 druhy
 treti
 $ cat hodnoty
 37
 
 nejaky text
 47
 $ paste -d = data hodnoty
 prvni=37
 druhy=
 treti=nejaky text
 =47

Programem wc(1) můžete zjistit počet řádek, slov a znaků v souboru.

 $ wc /etc/passwd
      27      37    1193 /etc/passwd
 $ tail -n 10 /etc/passwd | wc -l -w
      10      17

Úkol 1. Vytvořte soubor obsahující tři sloupce dat. Soubor setřiďte, zrušte duplicitní řádky a rozdělte na tři soubory tak, aby v každém souboru byl jeden sloupec dat. Soubory spojte do původní podoby, ale invertujte pořadí sloupců.

2.  Proudové editory

Proudové editory sed(1) a awk(1) slouží k úpravě a analýze dat protékajících těmito editory.

sed(1) se používá hlavně k nahrazování řetězců, nebo filtrování řádků. Regulární výrazy používané pro hledání vzorků jsou shodné s regulárními výrazy editoru ed(1).

 $ echo "One ring to rule them all..." |sed s/ring/unix/g
 One unix to rule them all...

Další příklad odfiltruje z výstupu programu last všechny řádky, ve kterých se vyskytuje slovo root.

 $ last |sed /root/d
 mck     pts/7   michelle   Mon Sep  3 17:53 - 18:52  (00:58)   
 kurem   pts/7   michelle   Mon Sep  3 17:52 - 17:53  (00:00)   
 kurem   pts/2   :0         Mon Sep  3 17:47   still logged in  
 ...

awk(1) slouží spíše k výběru sloupců a agregaci dat. Jako oddělovač sloupců se standardně předpokládá tabulátor nebo mezera. Na jednotlivé sloupce se odkazujeme ve tvaru $číslo_sloupce.

 $ ls -l |awk '{ print $1, $9}' 
 drwxr-sr-x bin
 drwxr-sr-x debian
 -rw-r----- diary
 drwxr-sr-x doc
 -rw-rw-r-- elisp-vyuka
 ...

Následující, na první pohled složitý, příklad nejdříve nastaví oddělovač polí na dvojtečku (část BEGIN). Potom se čte řádek po řádku zesouboru /etc/passwd a pro každý vyhovující se vytiskne upravený řádek. Nakonec (část END) se vytiskne počet zpracovaných řádků (proměnnou NR si awk(1) udržuje sám).

 $ awk 'BEGIN {FS = ":"}
 > {printf "Login: %s UID: %s Jmeno: %s\n", $1, $3, $5}
 > END { print "celkem zaznamu: " NR }' /etc/passwd

 Login: root UID: 0 Jmeno: root
 Login: daemon UID: 1 Jmeno: daemon
 Login: bin UID: 2 Jmeno: bin
 Login: novakj UID: 1000 Jmeno: Jan Novák
 ...
 celkem zaznamu: 27

Úkol 2. Na příkazu last si vyzkoušejte různé možnosti obou editorů. Inspirujte se výše uvedenými příklady.

3.  Textové editory

V této části cvičení si studenti vyzkouší práci s nejznámějšími celoobrazovkovými unixovými editory vi(1) a emacs(1). Seznam některých klávesových zkratek pro emacs a pro vi.

Obrázek
  1. Editor vim. Obrázek
  2. Editor GNU/Emacs.

Spuštění editoru a zárověň načtení souboru:

 $ vi .bashrc
 $ emacs .bashrc

Editor vi ukončíte příkazem „:q“. Ukončení emacsu se provede stiskem C-x C-c.

Úkol 3. Vytvořte soubor cviceni3.txt a napište dva krátké odstavečky. Vyzkoušejte si nahrazování v textu, opravy chyb, kopírování a přesouvání textu. Totéž proveďte s druhým editorem.

4.  X Window System

X klienty můžeme spouštět vzdáleně tak, že povolíme přístup ze vzdáleného počítače na náš display, připojíme se na vzdálený počítač, nastavíme proměnnou DISPLAY, aby ukazovala na náš lokální display a spustíme aplikaci.

 linux01$ xhost +phoenix.inf.upol.cz
 phoenix.inf.upol.cz being added to access control list
 linux01$ ssh phoenix.inf.upol.cz
 novakj@phoenix.inf.upol.cz's password:
 ...
 phoenix$ export DISPLAY="linux01.inf.upol.cz:0.0"
 phoenix$ xv &

Další možnost spouštění vzdálených X klientů je obdobná, ale používá jemnější rozlišení přístupu (pro jednotlivé uživatele).

 linux01$ xauth extract - $DISPLAY \
 > | ssh phoenix.inf.upol.cz  "/usr/bin/X11/xauth merge -"
 novakj@phoenix.inf.upol.cz's password:
 linux01$ ssh phoenix.inf.upol.cz
 novakj@phoenix.inf.upol.cz's password:
 ...
 phoenix$ export DISPLAY="linux01.inf.upol.cz:0.0"
 phoenix$ xv &

Variantou předchozího je využití „přeposílání X sezení“ zabudované přímo v ssh, které nastaví vše potřebné, ale je mírně pomalejší.

 $ ssh -X phoenix.inf.upol.cz
 novakj@phoenix.inf.upol.cz's password:
 ...
 phoenix$ xv &

Nastavení aplikačních zdrojů se provádí v souboru ~/.Xresources. Zde je malá ukázka:

Eterm*shade: 40
Eterm*menubar: off
Eterm*trans: true

XTerm*font: -*-*-medium-r-semicondensed-*-*-*-*-*-*-*-iso8859-2
rxvt*font: 7x13-2

emacs*Background: DarkSlateGray
emacs*Foreground: Wheat
emacs*pointerColor: Orchid
emacs*cursorColor: Orchid
emacs*bitmapIcon: on
emacs*font: tektite-2

Změny nastavení aplikačních zdrojů se aktivují příkazem xrdb(1).

 $ xrdb -load ${HOME}/.Xresources

Úkol 4. Spusťte si několik X aplikací (každou na jiném počítači v učebně). Pak si zkuste nastavit vzhled programu xcalc(1).

5.  Práce se síťovými klienty

Probírány jsou konzolové aplikace ssh(1), telnet(1), ftp(1), lynx(1), links(1), wget(1), talk(1).

K připojování na vzdálené počítače slouží programy ssh(1) a telnet(1) (možnost odchycení nešifrovaného hesla).

 $ ssh phoenix
 novakj@phoenix's password:
 Last login: Fri Aug 31 14:19:15 2001 on pts/4
 ...
 No mail.
 $

lynx(1) a links(1) jsou textové webové prohlížeče, se kterými se stránky (zvláště na modemových spojeních) načítají velmi rychle. links(1) je novější, umí zobrazovat rámy, tabulky, barvu a rozumí CSS. Seznam některých klávesových zkratek je zde.

Obrázek
  3. Prohlížeč Links.

Úkol 5. Připojte se k jinému počítači na učebně. Podívejte se textovým webovým prohlížečem na naše katedrální stránky. Zkuste si se sousedem popovídat programem talk.