Preusmjeravanje ulaznog izlaza u Linux/Unix primjerima
⚡ Pametni sažetak
Preusmjeravanje u Linuxu i Unixu mijenja gdje naredba čita ulaz ili šalje izlaz, zamjenjujeping tipkovnicu i zaslon za datoteke ili uređaje pomoću operatora kao što su znak veće od, znak manje od i operator dodavanja.

Preusmjeravanje je jedna od najkorisnijih značajki Linux i Unix shell, jer vam omogućuje da odlučite gdje naredba čita svoj ulaz i šalje izlaz. Ova stranica objašnjava izlaz, ulaz i preusmjeravanje pogrešaka s rađenim primjerima.
Što je preusmjeravanje?
Preusmjeravanje je značajka u Linuxu koja vam omogućuje promjenu standardnih ulaznih i izlaznih uređaja prilikom izvršavanja naredbe. Osnovni tijek rada bilo kojeg Linux naredba jest da prima ulaz i daje izlaz.
- Standardni ulazni (stdin) uređaj je tipkovnica.
- Standardni izlazni (stdout) uređaj je ekran.
Preusmjeravanjem se može promijeniti gore navedeni standardni ulaz i izlaz.
Preusmjeravanje izlaza
Donja grafika označava početak primjera preusmjeravanja izlaza.
Simbol '>' se koristi za preusmjeravanje izlaza (STDOUT).
Primjer:
ls -al > listings
Ovdje se izlaz naredbe ls -al preusmjerava u datoteku „listings“ umjesto na vaš zaslon. Snimka zaslona u nastavku prikazuje rezultat.
Napomena: Koristite ispravan naziv datoteke prilikom preusmjeravanja izlaza naredbe u datoteku. Ako datoteka s istim nazivom već postoji, preusmjerena naredba briše njezin sadržaj, a zatim ga prepisuje.
Ako ne želite da se datoteka prebriše, ali želite dodati više sadržaja postojećoj datoteci, upotrijebite operator '>>'. Snimka zaslona u nastavku prikazuje sadržaj kojem je dodan znak '>>'.
Standardni izlaz možete preusmjeriti 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 je konfiguracija zvuka na vašem računalu ispravna, ova naredba reproducira glazbenu datoteku.mp3.
Preusmjeravanje unosa
Donja grafika prikazuje preusmjeravanje unosa.
Simbol '<' se koristi za preusmjeravanje ulaza (STDIN).
Primjer: Program za poštu u Linuxu može vam pomoći u slanju e-pošte s terminala.
Sadržaj e-pošte možete upisati pomoću tipkovnice, standardnog uređaja za unos. Ali ako želite priložiti datoteku e-pošti, možete upotrijebiti operator preusmjeravanja unosa u sljedećem formatu.
mail -s "Subject" to-address < Filename
Snimka zaslona u nastavku prikazuje naredbu mail koja čita datoteku kao svoj ulaz.
Ovim se datoteka prilaže e-poruci i ona se šalje primatelju.
Gornji primjeri bili su jednostavni. Sada pogledajte neke napredne tehnike preusmjeravanja koje koriste deskriptore datoteka.
file Descriptili (FD)
U Linuxu i Unixu, sve je datoteka. Obične datoteke, direktoriji, pa čak i uređaji su datoteke. Svaka datoteka ima pridruženi broj koji se naziva deskriptor datoteke (FD).
Donji dijagram prikazuje standardne tokove i njihove deskriptore datoteka.
Vaš zaslon također ima deskriptor datoteke. Kada se program izvršava, izlaz se šalje deskriptoru datoteke zaslona i vidite izlaz programa na svom monitoru. Ako bi se izlaz poslao deskriptoru datoteke pisača, izlaz programa bi se ispisao.
Greška Preusmjeravanje
Kad god izvršavate program ili naredbu u terminalu, uvijek su otvorene tri datoteke, i to standardni ulaz, standardni izlaz i standardna datoteka za pogreške.
Ove datoteke su uvijek prisutne kad god se program izvršava. Kao što je već objašnjeno, svakoj od ovih datoteka pridružen je deskriptor datoteke.
| file | file Descriptor |
|---|---|
| Standardni ulaz STDIN | 0 |
| Standardni izlaz STDOUT | 1 |
| Standardna pogreška STDERR | 2 |
Prema zadanim postavkama, tok pogrešaka prikazuje se na zaslonu. Preusmjeravanje pogrešaka usmjerava pogreške u datoteku koja nije zaslon.
Zašto preusmjeravanje pogreške?
Preusmjeravanje pogrešaka jedna je od vrlo popularnih značajki Unixa i Linuxa.
Česti korisnici Unixa znaju da mnoge naredbe daju ogroman broj grešaka. Na primjer, prilikom pretraživanja datoteka, obično se dobije dopuštenje odbijene pogreške, koje obično ne pomažu osobi koja traži određenu datoteku. Tijekom izvršavanja shell skripti č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
Snimka zaslona ispod prikazuje ovu naredbu u terminalu.
Iznad, izvršavamo program pod nazivom myprogram. Deskriptor datoteke za standardnu pogrešku je 2. Korištenjem "2>" preusmjeravamo izlaz pogreške u datoteku pod nazivom "errorsfile". Na taj način, izlaz programa nije pretrpan greškama.
Primjer 2
Evo još jednog primjera koji koristi naredbu find.
find . -name 'my*' 2>error.log
Pomoću naredbe find pretražujemo trenutni direktorij "." za datoteku čije ime počinje s "my" i šaljemo sve pogreške u error.log.
Primjer 3: Pogledajmo složeniji primjer.
Administratori poslužitelja često popisuju direktorije i pohranjuju i izlaz s greškama i standardni izlaz u datoteku, što se kasnije može obraditi. Evo naredbe.
ls Documents ABC> dirlist 2>&1
Donji dijagram prikazuje kako se oba toka snimaju u jednu datoteku.
Ovdje:
- 2>&1 znači da se STDERR preusmjerava na isti cilj kao i STDOUT (što je popis direktorija datoteka).
- Izlaz pogreške preusmjerava se na standardni izlaz, koji se pak preusmjerava na popis direktorija datoteke. Stoga se oba toka zapisuju u popis direktorija datoteke.
Donji dijagram sažima kako se ulaz, izlaz i preusmjeravanje pogrešaka uklapaju.






.png)