Preusmjeravanje ulaznog izlaza u Linux/Unix primjerima
ล to je preusmjeravanje?
Preusmjeravanje je znaฤajka u Linuxu tako da prilikom izvrลกavanja naredbe moลพete promijeniti standardne ulazno/izlazne ureฤaje. Osnovni tijek rada svakog Linux naredba je da uzima ulaz i daje izlaz.
- Standardni ulazni (stdin) ureฤaj je tipkovnica.
- Standardni izlazni (stdout) ureฤaj je ekran.
Preusmjeravanjem se gornji standardni ulaz/izlaz moลพe promijeniti.
Kliknite ovdje ako video nije dostupan
Preusmjeravanje izlaza
The '>' simbol se koristi za preusmjeravanje izlaza (STDOUT).
Primjer:
ls -al > listings
Ovdje se izlaz naredbe ls -al preusmjerava na datoteku "listings" umjesto na vaลก zaslon.
biljeลกke: Koristite ispravan naziv datoteke dok preusmjeravate izlaz naredbe u datoteku. Ako postoji datoteka s istim nazivom, preusmjerena naredba ฤe izbrisati sadrลพaj te datoteke i tada moลพe biti prebrisan.โ
Ako ne ลพelite da datoteka bude prebrisana, ali ลพelite dodati viลกe sadrลพaja postojeฤoj datoteci, trebali biste koristiti '>>' operator.
Moลพete preusmjeriti standardni izlaz, ne samo na datoteke, veฤ i na ureฤaje!
$ cat music.mp3 > /dev/audio
Naredba cat ฤita glazbenu datoteku.mp3 i ลกalje izlaz na /dev/audio, ลกto je audio ureฤaj. Ako su konfiguracije zvuka na vaลกem raฤunalu ispravne, ova naredba ฤe reproducirati glazbenu datoteku.mp3
Preusmjeravanje unosa
The '' simbol se koristi za preusmjeravanje unosa (STDIN).
Primjer: Program za poลกtu u Linuxu moลพe vam pomoฤi u slanju e-poลกte s terminala.
Moลพete upisati sadrลพaj e-poลกte koristeฤi standardnu โโtipkovnicu ureฤaja. Ali ako ลพelite priloลพiti datoteku e-poลกti, moลพete koristiti operator za preusmjeravanje unosa u sljedeฤem formatu.
Mail -s "Subject" to-address < Filename
Ovo bi priloลพilo datoteku uz e-poลกtu i ona bi bila poslana primatelju.
Gore navedeni primjeri bili su jednostavni. Pogledajmo neke napredne tehnike preusmjeravanja koje koriste File Descriptili.
file Descriptili (FD)
U Linuxu/Unixu sve je datoteka. Obiฤna datoteka, direktoriji, pa ฤak i ureฤaji su datoteke. Svaka datoteka ima pridruลพeni broj koji se zove datoteka Descriptili (FD).
Vaลก zaslon takoฤer ima datoteku Descriptili. Kada se program izvrลกi, izlaz se ลกalje u File Descriptili zaslona, โโa na monitoru vidite programski izlaz. Ako se izlaz ลกalje u File Descriptili pisaฤa, izlaz programa bio bi ispisan.
Greลกka Preusmjeravanje
Kad god izvrลกite program/naredbu na terminalu, 3 datoteke su uvijek otvorene, tj. standardni ulaz, standardni izlaz, standardna pogreลกka.
Te su datoteke uvijek prisutne kad god se program pokrene. Kao ลกto je prije objaลกnjeno, deskriptor datoteke pridruลพen je svakoj od ovih datoteka.
| file | file Descriptor |
|---|---|
| Standardni ulaz STDIN | 0 |
| Standardni izlaz STDOUT | 1 |
| Standardna pogreลกka STDERR | 2 |
Prema zadanim postavkama, tok pogreลกaka prikazan je na zaslonu. Preusmjeravanje pogreลกaka je usmjeravanje pogreลกaka u datoteku koja nije zaslon.
Zaลกto preusmjeravanje pogreลกke?
Preusmjeravanje pogreลกke jedna je od vrlo popularnih znaฤajki Unix / Linux.
ฤesti korisnici UNIX-a smatrat ฤe da vam mnoge naredbe daju ogromne koliฤine pogreลกaka.
- Na primjer, dok traลพite datoteke, obiฤno dobivate pogreลกke odbijene dozvole. Te pogreลกke obiฤno ne pomaลพu osobi koja traลพi odreฤenu datoteku.
- Dok izvrลกavate skripte ljuske, ฤesto NE ลพelite da poruke o pogreลกkama zatrpavaju normalan izlaz programa.
Rjeลกenje je preusmjeriti poruke o pogreลกci u datoteku.
Primjer 1
$ myprogram 2>errorsfile
Gore izvrลกavamo program imena myprogram.
Deskriptor datoteke za standardnu โโpogreลกku je 2.
Koriลกtenjem โ2>โ preusmjeravamo izlaz pogreลกke u datoteku pod nazivom โerrorfileโ
Stoga izlaz programa nije zatrpan pogreลกkama.
Primjer 2
Evo joลก jednog primjera koji koristi naredbu find โ
find . -name 'my*' 2>error.log
Pomoฤu naredbe โfindโ traลพimo โ.โ trenutni direktorij za datoteku s "ime" koje poฤinje s "my"
Primjer 3: Pogledajmo sloลพeniji primjer,
Administratori posluลพitelja ฤesto popisuju direktorije i pohranjuju pogreลกke i standardni izlaz u datoteku, koja se kasnije moลพe obraditi. Evo zapovijedi.
ls Documents ABC> dirlist 2>&1
Ovdje,
- koji zapisuje izlaz iz jedne datoteke na ulaz druge datoteke. 2>&1 znaฤi da STDERR preusmjerava na cilj STDOUT-a (koji je popis datoteka za direktorij)
- Preusmjeravamo ispis pogreลกke na standardni izlaz koji se pak preusmjerava na popis datoteka. Stoga se oba izlaza zapisuju u datoteku dirlist
Rezime
- Svaka datoteka u Linuxu ima odgovarajuฤu datoteku Descriptili povezano s njim
- Tipkovnica je standardni ulazni ureฤaj dok je zaslon standardni izlazni ureฤaj
- โ>โ je operator za preusmjeravanje izlaza. โ>>โ dodaje izlaz u postojeฤu datoteku
- โ<โ je operator za preusmjeravanje unosa
- โ>&โ preusmjerava izlaz jedne datoteke u drugu.
- Pogreลกku moลพete preusmjeriti pomoฤu odgovarajuฤe datoteke Descriptili 2.






.png)