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
Korištenje električnih romobila ističe '>' 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 datoteku music.mp3 i šalje izlaz u /dev/audio koji je audio uređaj. Ako su konfiguracije zvuka na vašem računalu ispravne, ova naredba će reproducirati datoteku music.mp3
Preusmjeravanje unosa
Korištenje električnih romobila ističe '' 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.