Bemeneti kimenet átirányítása Linux/Unix rendszerben Példák

Mi az átirányítás?

Az átirányítás egy olyan funkció a Linuxban, amely parancs végrehajtása során megváltoztathatja a szabványos bemeneti/kimeneti eszközöket. Az alapvető munkafolyamat bármely Linux parancs az, hogy vesz egy bemenetet és ad egy kimenetet.

  • A szabványos beviteli (stdin) eszköz a billentyűzet.
  • A szabványos kimeneti (stdout) eszköz a képernyő.

Átirányítással a fenti szabványos bemenet/kimenet módosítható.

Kattints itt ha a videó nem érhető el

Kimenet átirányítása

Az '>' szimbólum a kimenet (STDOUT) átirányítására szolgál.

Kimenet átirányítása

Példa:

ls -al > listings

Itt az ls -al parancs kimenete a képernyő helyett a „listings” fájlba kerül.

Kimenet átirányítása

Megjegyzések: Használja a megfelelő fájlnevet, miközben átirányítja a parancs kimenetét egy fájlra. Ha létezik ilyen nevű fájl, az átirányított parancs törli az adott fájl tartalmát, majd felülírható.”

Ha nem szeretné, hogy egy fájl felülírásra kerüljön, hanem további tartalmat szeretne hozzáadni egy meglévő fájlhoz, akkor használja '>>' operátor.

Kimenet átirányítása

Átirányíthatja a szabványos kimenetet, nem csak fájlokra, hanem eszközökre is!

$ cat music.mp3 > /dev/audio

A cat parancs beolvassa a music.mp3 fájlt, és elküldi a kimenetet a /dev/audio fájlba, amely az audioeszköz. Ha a számítógép hangbeállításai megfelelőek, ez a parancs a music.mp3 fájlt játssza le

Bemeneti átirányítás

Az '' szimbólum a bemeneti (STDIN) átirányításra szolgál

Bemeneti átirányítás

Példa: A Linux levelezőprogramja segíthet e-mailek küldésében a terminálról.

Az e-mail tartalmát a készülék szabványos billentyűzetével írhatja be. Ha azonban fájlt szeretne csatolni az e-mailhez, használhatja a bemeneti átirányítási operátort a következő formátumban.

Mail -s "Subject" to-address < Filename

Bemeneti átirányítás

Ez csatolja a fájlt az e-mailhez, és elküldi a címzettnek.

A fenti példák egyszerűek voltak. Nézzünk meg néhány előre irányított technikát, amelyek a File-t használják Descriptill.

filé Descriptors (FD)

Linux/Unix esetén minden fájl. A normál fájl, a könyvtárak és még az eszközök is fájlok. Minden fájlhoz tartozik egy Fájl nevű szám Descriptvagy (FD).

A képernyőn egy fájl is található Descriptvagy. A program végrehajtásakor a kimenet a Fájlba kerül Descriptvagy a képernyőn, és megjelenik a program kimenete a monitoron. Ha a kimenet a Fájlba kerül Descriptvagy a nyomtató esetében a program kimenete ki lett volna nyomtatva.

Hiba az átirányításban

Valahányszor végrehajt egy programot/parancsot a terminálon, mindig 3 fájl van nyitva: standard bemenet, szabványos kimenet, standard hiba.

Hiba az átirányításban

Ezek a fájlok mindig jelen vannak, amikor egy program fut. Amint azt korábban kifejtettük, egy fájlleíró társítva van mindegyik fájlhoz.

filé filé Descriptor
Standard bemenet STDIN 0
Standard kimenet STDOUT 1
Standard hiba STDERR 2

Alapértelmezés szerint hibaüzenet jelenik meg a képernyőn. A hibaátirányítás a hibákat a képernyőn kívüli fájlba irányítja.

Miért az átirányítási hiba?

A hiba-újrairányítás az egyik nagyon népszerű funkció Unix/Linux.

A gyakori UNIX-felhasználók úgy gondolják, hogy sok parancs hatalmas mennyiségű hibát okoz.

  • Például a fájlok keresése során az ember általában engedély megtagadva hibákat kap. Ezek a hibák általában nem segítenek annak, aki egy adott fájlt keres.
  • A shell szkriptek végrehajtása közben gyakran NEM szeretné, ha a hibaüzenetek összezavarják a normál programkimenetet.

A megoldás a hibaüzenetek átirányítása egy fájlba.

Példa 1

$ myprogram 2>errorsfile

Miért hiba az átirányításban

Fent egy myprogram nevű programot hajtunk végre.

A szabványos hiba fájlleírója a 2.

A „2>” használatával átirányítjuk a hibakimenetet egy „errorfile” nevű fájlba.

Így a program kimenete nincs tele hibákkal.

Példa 2

Íme egy másik példa, amely a find utasítást használja -

find . -name 'my*' 2>error.log

A „find” paranccsal keresünk a „.” aktuális könyvtár egy olyan fájlhoz, amelynek „name” kezdete „saját”

Miért hiba az átirányításban

Példa 3: Lássunk egy bonyolultabb példát,

A szerveradminisztrátorok gyakran listázzák a könyvtárakat, és mind a hibákat, mind a szabványos kimenetet fájlba tárolják, amely később feldolgozható. Itt a parancs.

ls Documents ABC> dirlist 2>&1

Itt,

  • amely az egyik fájl kimenetét egy másik fájl bemenetére írja. A 2>&1 azt jelenti, hogy az STDERR átirányít az STDOUT céljára (ami a fájlkönyvtár)
  • A hibakimenetet átirányítjuk a szabványos kimenetre, amely viszont a fájl könyvtárlistára kerül. Ezért mindkét kimenet a fájl könyvtárlistába kerül

Miért hiba az átirányításban

Összegzésként

  • A Linuxban minden fájlhoz tartozik egy megfelelő fájl Descriptvagy társul hozzá
  • A billentyűzet a szabványos beviteli eszköz, míg a képernyő a szabványos kimeneti eszköz
  • A „>” a kimeneti átirányítási operátor. A „>>” hozzáfűzi a kimenetet egy meglévő fájlhoz
  • A „<” a bemeneti átirányítás operátora
  • A ">&" átirányítja az egyik fájl kimenetét a másikra.
  • A hibát átirányíthatja a megfelelő fájl használatával Descriptvagy 2.

Foglald össze ezt a bejegyzést a következőképpen: