Intro
Néha ilyen parancsokat látunk a shellben:
- $ ls foo > /dev/null 2>&1
Lehet, hogy első alkalommal nehéz lesz megérteni, mit csinál ez, ezért ez a megjegyzés röviden elmagyarázza.
I/O átirányítás
Tegyük fel, hogy most van egy egyszerű szöveges fájl:
Most irányítsuk át ennek a fájlnak a tartalmát egy másik helyre:
A fenti átirányítási műveletben nem látunk semmilyen kimenetet a terminálon, mert a > parancs átirányítja a test.txt tartalmát a következő címreoutput.txt, amely egy szabványos kimenet (stdout).
A standard kimenettel szemben létezik a standard hiba (stdr), pl.
Hiba történt az átirányítási folyamat során, mert nincs no_such_file.txt nevű fájl az aktuális könyvtárban. Ebben az esetben hiába használjuk a > parancsot, az output.txt állományba nem lehet beírni a tartalmat, mert nincs stdout tartalom, hanem helyette stderror hibaüzenet jelenik meg.
Fájlleíró
A fájlleíró egy nyitott fájl pozitív egész számának tekinthető. Ha 100 nyitott fájlod van, akkor alapvetően 100 megfelelő fájlleíród van.
A Unix/Unix-szerű rendszerekben vannak stdout és stderr fájlleírók is, amelyeknek, hogy világosak legyünk, külön célpontjaik vannak a kimeneteknek.ezekhez a kimeneti célpontokhoz:
- 1: az stdout
- 2: az stderr
Az összevonás
A fenti koncepció szerint, ha egy ismert fájl tartalmát egy másik fájlba akarjuk írni, akkor ezt megtehetjük.