1. LinuxFEST 7.3.2009
GNU/Linux
Presmerovanie I/O
Autor: Michal Sedlák
Email: michal6103 [at] gmail [dot] com
2. Prezentácia je založená na
The LBook:
An Introductory Guide to Linux Basics
http://linuxbasics.org/course/book/index
Vizuálna téma prezentácie je odvodená
témy vytvorenej:
Sakari Koivunen and Henrik Omma
Released under the LGPL license.
7.3.2009 2/40
3. Obsah
●
Jednoduché presmerovania
– Štandardný vstup a výstup
– Operátory
●
Pokročilé presmerovania
– File deskriptor
●
Filtre
7.3.2009 3/40
4. Presmerovanie
●
Zachytenie výstupu
– Súboru
– Príkazu
– Programu
– Skriptu
– Bloku kódu v skripte
●
Poslanie na vstup
– Súboru, príkazu, programu, alebo skriptu
7.3.2009 4/40
5. Input, Output, Error
●
Program
– Standard input
●
Klávesnica
– Standrad output
●
Obrazovka
●
Tlačiareň
●
Súbor
– Standard error
7.3.2009 5/40
6. Operátory > a |
●
prikaz > subor
– Presmeruje stdout do súboru
– Ak súbor neexistuje, tak bude vytvorený
– Ak súbor existuje, bude prepísaný
●
prikaz1 | prikaz2
– Presmeruje stdout príkazu jedna do stdin
príkazu dva
7.3.2009 6/40
7. Príklad >
$ cat > test1
Toto sa zapise do suboru
$ cat > test2
Toto sa zapise do ineho suboru
$ cat test1
Toto sa zapise do suboru
$ cat test2
Toto sa zapise do ineho suboru
7.3.2009 7/40
11. Sieť
●
/dev/tcp/host/port
●
/dev/udp/host/port
●
Vypnuté v Debiane:
– nepredvídateľné dôsledky
– Netcat
– /usr/share/doc/bash/README.Debian.gz
7.3.2009 11/40
12. Rúra |
●
Presmerovanie výstup jedného programu
do druhého
●
grep retazec1 subor | grep -v retazec2
●
ls -la | less
●
cat script | mysql
7.3.2009 12/40
14. Príklad <
●
Presmerovanie obsahu súboru do
štandardného vstupu programu
$ ls Obrázky/
Avatar Experimenty Webcam
$ ls Obrázky/ > dir.txt
$ cat dir.txt | sort r
Webcam
Experimenty
Avatar
$ sort r < dir.txt
Webcam
Experimenty
Avatar
7.3.2009 14/40
15. Kombinovanie operátorov
●
Operátory sa dajú kombinovať
$ sort r < dir.txt > reversed.txt
$ cat reversed.txt
Webcam
Experimenty
Avatar
$ less help | grep i examine > examine.txt
$ cat examine.txt
:e [file] Examine a new file.
:n * Examine the (Nth) next file
:p * Examine the (Nth) previous file
:x * Examine the first (or Nth) file
+cmd Execute the less cmd each time a new file
7.3.2009 15/40
16. Kombinovanie operátorov
●
Ľubovoľný počet |
●
Niektoré programy nepoužívajú stdin a
stdout (čítajte man stránky)
7.3.2009 16/40
17. Operátor >>
●
Pripojenie stdout na koniec súboru
●
Ak súbor neexistuje, tak vytvorí súbor
●
Ak súbor existuje, tak ho rozšíri o výstup
spusteného programu
7.3.2009 17/40
18. Príklad >>
$ date >> datum.txt
$ date >> datum.txt
$ date >> datum.txt
$ date >> datum.txt
$ date >> datum.txt
$ cat datum.txt
Pi mar 6 20:59:46 CET 2009
Pi mar 6 20:59:48 CET 2009
Pi mar 6 20:59:49 CET 2009
Pi mar 6 20:59:50 CET 2009
Pi mar 6 20:59:51 CET 2009
7.3.2009 18/40
19. File deskriptor
●
Pridelený každému otvorenému súboru
●
Číslo pridelené OS
●
Identifikátor slúžiaci na poskytnutie
prístupu
●
Pre používateľa 0-9
●
exec (3 -Ubuntu, 5-LDP)
7.3.2009 19/40
21. 0,1,2 File deskriptor
●
3 typy I/O
– standard input: FD 0
– standard output: FD 1
– standard error: FD 2
●
Čísla sú sú identifikátory
– > je ekvivalent k 0>
– < je ekvivalent k <1
7.3.2009 21/40
22. Príklad 1> a 2>
$ mkdir testdir
$ cd testdir
$ > file1
$ ls
File1
$ ls file1 file2
ls: nie je možné pristupovať k file2: No such file or directory File1
$ ls file1 file2 1> dirlist 2> errorlist
$ cat dirlist
File1
$ cat errorlist
ls: nie je možné pristupovať k file2: No such file or directory
7.3.2009 22/40
23. >N vs. >&N
●
>N
– Presmerovanie do suboru N
●
>&N
– Presmerovanie na FD N
7.3.2009 23/40
24. stderr a stdout v jednom
súbore
$ ls file1 file2 > dirlist 2>&1
$ cat dirlist
ls: nie je možné pristupovať k file2: No such file
or directory
file1
$ ls file1 file2 &> dirlist
$ cat dirlist
ls: nie je možné pristupovať k file2: No such file
or directory
file1
$ ls file1 file2 2>&1 > dirlist
ls: nie je možné pristupovať k file2: No such file
or directory
$ cat dirlist
file1
7.3.2009 24/40
25. Prezeranie chýb
●
Ak program generuje veľa chýb
● command 2>&1 | less
7.3.2009 25/40
27. Presmerovanie chýb
●
Presmerovanie chýb do iného terminálu
$ tty
/dev/pts/1
$ make 2> /dev/pts/0
$ tty
/dev/pts/0
$ make: *** No targets specified and no
makefile found. Stop.
make: *** No targets specified and no makefile
found. Stop.
7.3.2009 27/40
28. Zapisovanie do súborov a
zároveň na obrazovku
$ ls file1 file2 | tee dirlist
ls: nie je možné pristupovať k file2: No such file
or directory
file1
$ cat dirlist
file1
$ ls file1 file2 2>&1 | tee dirlist
ls: nie je možné pristupovať k file2: No such file
or directory
file1
$ cat dirlist
ls: nie je možné pristupovať k file2: No such file
or directory
file1
7.3.2009 28/40
32. Trvalé presmerovanie
exec
●
exec - vytvorenie nového procesu,
nahradením starého
●
exec ovplyvní presmerovanie, pre celý
skript, alebo shell (PID)
●
exec >filename (cely shell, skript)
●
> filename (len pre novo forknuté
procesy)
7.3.2009 32/40
37. sort
●
Zoradenie podľa michal@doma:~/testdir$ ls |
sort r
rôznych kriterií g
f
e
●
-r reverse d
c
●
-R random b
a
michal@doma:~/testdir$ ls |
●
-u iba unikátne sort R
g
e
b
d
c
f
a
7.3.2009 37/40
39. sed
●
Stream editor
●
Regulárne výrazy
$ echo Windows je dominantny OS a Balmer je stastny | sed '
s/Windows/Linux/
s/stastny/nestastny/'
Linux je dominantny OS a Balmer je nestastny
7.3.2009 39/40