Bemeneti kimenet átirányítása Linux/Unix rendszerben Példák
⚡ Okos összefoglaló
Az átirányítás Linuxban és Unixban megváltoztatja, hogy egy parancs hol olvassa a bemenetet vagy küldi a kimenetet, swapping a billentyűzet és a képernyő fájlokhoz vagy eszközökhöz olyan operátorok használatával, mint a nagyobb-mint jel, a kisebb-mint jel és a hozzáfűző operátor.

Az átirányítás az egyik leghasznosabb funkciója a Linux és Unix shell, mivel lehetővé teszi annak eldöntését, hogy egy parancs hová olvassa a bemenetét és hová küldi a kimenetét. Ez az oldal a kimenetet, a bemenetet és a hiba átirányítását ismerteti példákkal.
Mi az átirányítás?
Az átirányítás egy olyan Linux funkció, amely lehetővé teszi, hogy egy parancs végrehajtásakor megváltoztassuk a szabványos bemeneti és kimeneti eszközöket. Bármely parancs alapvető munkafolyamata Linux parancs az, hogy bemenetet fogad és kimenetet ad.
- 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 standard bemenet és kimenet megváltoztatható.
Kimenet átirányítása
Az alábbi ábra a kimeneti átirányítási példák kezdetét jelöli.
A '>' szimbólum a kimenet (STDOUT) átirányítására szolgál.
Példa:
ls -al > listings
Itt az ls -al parancs kimenete a képernyő helyett a „listings” fájlba kerül átirányításra. Az alábbi képernyőkép mutatja az eredményt.
Megjegyzés: A parancs kimenetének fájlba átirányításakor használja a helyes fájlnevet. Ha már létezik egy azonos nevű fájl, az átirányított parancs törli a tartalmát, majd felülírja azt.
Ha nem szeretné, hogy egy fájl felülíródjon, de további tartalmat szeretne hozzáadni egy meglévő fájlhoz, akkor használja a '>>' operátort. Az alábbi képernyőképen a '>>' jellel kiegészített tartalom látható.
A szabványos kimenetet nemcsak fájlokba, hanem eszközökre is átirányíthatod.
$ cat music.mp3 > /dev/audio
A cat parancs beolvassa a zenefájlt.mp3 és a kimenetet a /dev/audio könyvtárba küldi, ami az audioeszköz. Ha a számítógép hangbeállításai megfelelőek, ez a parancs lejátssza a fájl zenéjét.mp3.
Bemeneti átirányítás
Az alábbi ábra bemutatja a bemenet átirányítását.
A '<' szimbólum a bemenet (STDIN) átirányítására szolgál.
Példa: A Linux levelezőprogramja segíthet e-mailek küldésében a terminálból.
Az e-mail tartalmát beírhatja a billentyűzettel, amely a szabványos beviteli eszköz. De ha fájlt szeretne csatolni az e-mailhez, használhatja a beviteli átirányítási operátort a következő formátumban.
mail -s "Subject" to-address < Filename
Az alábbi képernyőképen a mail parancs egy fájlt olvas be bemenetként.
Ez csatolja a fájlt az e-mailhez, és elküldi a címzettnek.
A fenti példák egyszerűek voltak. Most nézzünk meg néhány fejlett átirányítási technikát, amelyek fájlleírókat használnak.
filé Descriptors (FD)
Linuxban és Unixban minden fájl. A hagyományos fájlok, könyvtárak és még az eszközök is fájlok. Minden fájlhoz tartozik egy szám, amelyet fájlleírónak (FD) neveznek.
Az alábbi ábra a szabványos adatfolyamokat és azok fájlleíróit mutatja.
A képernyőnknek is van egy fájlleírója. Amikor egy program végrehajtódik, a kimenet a képernyő fájlleírójába kerül, és a program kimenetét látod a monitorodon. Ha a kimenetet a nyomtató fájlleírójába küldenénk, a program kimenete nyomtatódna ki.
Hiba az átirányításban
Amikor egy programot vagy parancsot futtatunk a terminálon, három fájl mindig nyitva van: a standard bemenet, a standard kimenet és a standard hiba.
Ezek a fájlok mindig jelen vannak, amikor egy program fut. Ahogy korábban említettük, mindegyik fájlhoz tartozik egy fájlleíró.
| filé | filé Descriptor |
|---|---|
| Standard bemenet STDIN | 0 |
| Standard kimenet STDOUT | 1 |
| Standard hiba STDERR | 2 |
Alapértelmezés szerint a hibafolyam megjelenik a képernyőn. A hibaátirányítás a hibákat egy másik fájlba irányítja, mint a képernyő.
Miért az átirányítási hiba?
A hibaátirányítás a Unix és a Linux egyik nagyon népszerű funkciója.
A gyakori Unix-felhasználók tudják, hogy sok parancs rengeteg hibát okoz. Például fájlok keresésekor az ember jellemzően a következőt kapja: engedély megtagadott hibák, amelyek általában nem segítenek az adott fájlt kereső személynek. A shell szkriptek futtatása közben gyakran nem szeretnénk, hogy a hibaüzenetek eltorzítsák a normál programkimenetet.
A megoldás az, hogy a hibaüzeneteket átirányítjuk egy fájlba.
Példa 1
$ myprogram 2>errorsfile
Az alábbi képernyőkép ezt a parancsot mutatja a terminálban.
Fent egy myprogram nevű programot futtatunk. A standard hiba fájlleírója 2. A „2>” használatával a hiba kimenetét átirányítjuk egy „errorsfile” nevű fájlba. Így a program kimenete nem lesz hibákkal zsúfolt.
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 parancs használatával az aktuális „.” könyvtárban keresünk egy „my” betűvel kezdődő nevű fájlt, és a hibákat az error.log fájlba küldjük.
Példa 3: Nézzünk egy összetettebb példát.
A szerveradminisztrátorok gyakran listázzák a könyvtárakat, és a hiba- és a szabványos kimenetet egy fájlban tárolják, amelyet később feldolgozhatnak. Íme a parancs.
ls Documents ABC> dirlist 2>&1
Az alábbi ábra azt mutatja, hogy mindkét adatfolyamot egyetlen fájlban rögzítik.
Itt:
- A 2>&1 azt jelenti, hogy az STDERR ugyanarra a célra van átirányítva, mint az STDOUT (ami a fájl könyvtárlista).
- A hibaüzenetet a rendszer a standard kimenetre irányítja, amely viszont a „dirlist” fájlba kerül. Így mindkét adatfolyam a „dirlist” fájlba íródik.
Az alábbi ábra összefoglalja, hogyan illeszkedik egymáshoz a bemenet, a kimenet és a hibaátirányítás.






.png)