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).

Preusmjeravanje izlaza

Primjer:

ls -al > listings

Ovdje se izlaz naredbe ls -al preusmjerava na datoteku "listings" umjesto na vaลก zaslon.

Preusmjeravanje izlaza

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.

Preusmjeravanje izlaza

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).

Preusmjeravanje unosa

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

Preusmjeravanje unosa

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.

Greลกka Preusmjeravanje

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

Zaลกto preusmjeravanje pogreลกke

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"

Zaลกto preusmjeravanje pogreลกke

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

Zaลกto preusmjeravanje pogreลกke

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.

Saลพmite ovu objavu uz: