Átirányítások

Akárcsak a Bourne shell-nél, itt is lehetőség van a be- és kimenetek átirányítására. Az alábbiakban szereplő megadási módokat használhatjuk az átirányításkor. Egységesen igaz az, hogy az átirányítás forrásaként illetve céljaként megadott name fájlnéven a C shell szükség esetén mind fájlnév, mind változó, mind parancsbehelyettesítést végrehajt. A C shell másképpen kezeli az átirányítást, mint a Bourne shell, ezért a metakarakterek használatánál indokolt a figyelem.

 

<name A bemeneti csatorna a standard input helyett name lesz.

>name A kimeneti csatorna a standard output helyett name lesz. Ha name már létezik, régi tartalma felülíródik. Ha a noclobber shell-változó be van állítva, és name már létezik, a shell hibaüzenetet ad.

>& name Mind a kimenet, mind a hibacsatorna name lesz. Ha a noclobber shell-változó be van állítva és name létezik, a shell hibaüzenetet ad.

>>name Additív kimenetátirányítás. A kimeneti csatorna tartalmát name tartalmához fűzi. Ha name nem létezik, és a noclobber shell-változó be van állítva, a shell hibaüzenetet ad.

 

>>& name A kimenetet és a hibacsatornát name tartalmához fűzi. Ha noclobber be van állítva, és name nem létezik, a shell hibaüzenetet ad.

>! name, >&! name, >>! name, >>&! name

Ugyanaz mint az előzőek, az eltérés a nem létező, illetve felülírandó name fájl kezelésében van. Ha a noclobber shell-változó be van állítva, az operátorok után beszúrt ! karakter hatására érhető el, hogy a shell hibaüzenet küldése helyett végrehajtsa a nem létező name létrehozását, illetve a létező fájl módosítását. A noclobber shell-változó beállítása esetén ugyanis nem hajtódnak végre a fájlok felülírását eredményező műveletek.

<<pattern

...

pattern Beágyazott input (Here document): a következő sortól addig olvassa a shell a bemenetet, amíg egy sor elején nem szerepel a pattern minta. A beolvasott szöveget úgy tekinti, mintha a billentyűzetről gépelték volna be. A gyakorlatban ez úgy működik, hogy a shell a lezáró pattern mintáig terjedő sorokat egy belső ideiglenes fájlba olvassa be, majd a lezáró minta felismerése után egy pipe-ot nyit meg a beágyazott inputot fogadó programhoz, és e pipe-ba másolja az ideiglenes fájl tartalmát. Magán a pattern mintán a shell nem hajt végre semmilyen behelyettesítést sem, s a beolvasott szövegen is csak akkor hajt végre változó- és parancs behelyettesítést, ha a pattern mintát nem védtük le escape karakterrel vagy idézőjelekkel.

prog1 | prog2 A prog1 program kimenetét prog2 bemeneti csatornájára köti.

prog1 |& prog2

Nemcsak prog1 kimeneti, hanem hibacsatornáját is prog2 bemenetére irányítja.

A fenti mechanizmusokat megnézve a legfontosabb különbség a Bourne shell-hez képest az, hogy itt nem lehet külön-külön dönteni a kimenet és a hibacsatorna átirányításáról, hanem vagy a kimenet, vagy a kimenet és a hibacsatorna együttes átirányításáról lehet csak szó.

 

Tartalomjegyzék