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 fájl tartalmának átirányítása.
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.

Az 1 ezen az oldalon az stdout-ot jelenti, amelynek szintaxisa a következő:
- >
Tehát amikor azt látod, hogy valaki azt írja from.foo > to.bar, akkor csak kihagyja a
Az stderr átirányításához ugyanígy tehetsz:

Ha mind az stdout-ot, mind az stderr-t ugyanarra a helyre szeretné átirányítani, akkor ezt teheti.

- &1 egy 1-es azonosítójú fájlleíróra, azaz az stdout-ra való hivatkozásként használatos.
- 2>&1 az stderr tartalmának átirányítását jelenti az stdout-ra.
Summary
- A kimenetnek általában két célja van: stdout és stderr.
- A kimenetet több helyre is irányíthatjuk, de általában egy fájlba.
- A fájlleíró használható az stdout (1) és az stderr (2) megkülönböztetésére.
- a > output_location parancs valójában az 1> output_location parancs rövidítése.
- A &-t használhatjuk más fájlleírókra való hivatkozásra.