Bemeneti, kimeneti és szállítószalagok

Stdin és stdout

A standard I / O patakok elsősorban a csere szöveges információ. Itt nem számít, ki keresztül kommunikál szöveg: egy ember, egy program vagy programok egymást - a legfontosabb dolog, hogy van egy adatcsatornán, és így szólt: „ugyanazt a nyelvet”.

Munka közben a parancssorban, akkor a szabványos bemenetről a héj csatlakozik a billentyűzet, és a szabványos kimenet és hiba kimenet - a képernyőről (vagy terminál emulátor ablakban). Mutassunk példát egyszerű parancsokat - kat. Általában a cat parancs adatokat olvas az összes felsorolt ​​fájlok paraméternek, és elküldi a kiolvasott közvetlenül a szabványos kimenetre (stdout). Ezért a parancs

tartalmát jeleníti meg az első fájl történelem végleges. majd - mesterek szakdolgozat fájlt.

Azonban, ha a fájl neve nincs megadva, macska programot olvassa be a standard bemenetről, és azonnal vissza őket stdoutra (nem változik). Ezek áthaladnak a macskát. mind a csövön keresztül. Itt egy példa:

Minden sor be a billentyűzetről, macska program azonnal visszatér a képernyőre. Amikor belép információt a standard input végét szövegbevitel esetén egy speciális billentyűkombináció, általában a Ctrl - D.

Nézzük egy másik példát. sort parancs beolvassa a bemeneti szöveget (szintén stdin, hacsak nincs fájl neve), és gyárt egy sor ezeket a sorokat, rendezett módon a stdout-ra. Mi ellenőrizze annak hatását.

Amint látható, miután a Ctrl - D. sort vezetett karakterlánc alfabetikus sorrendben.

Átirányítása bemeneti és kimeneti

Tegyük fel, hogy szeretné küldeni a kimeneti sort egy fájlt, hogy mentse betűrendes listája a lemezt. A héj segítségével irányítsa át a kimenetét egy fájlba a> jel. Itt egy példa:

Látható, hogy az eredmény a sort parancs nem jelenik meg, de ez egy fájlban tárolja nevű bevásárló-listát. A kijelző a fájl tartalma:

Azonban, meg tudod csinálni, különben nem csak átirányítása szabványos kimenet és szabványos bemenet egy file kezelő ezzel a szimbólummal <.

Az eredmény a sort parancs

Bemutatjuk a koncepció a szűrőt. Filter egy olyan program, amely beolvassa a standard bemenetről, feldolgozza azokat valamilyen módon, és elküldi az eredményt a szabványos kimenetre. Ha átirányítás szabványos bemeneti és kimeneti fájlokat működhet. Mint már említettük, alapértelmezés szerint stdin és stdout olvassa el a billentyűzet és a képernyő, ill. sort egy egyszerű szűrőprogram - rendezi a bejövő adatokat, és elküldi az eredményt a szabványos kimenetre. Nagyon egyszerű szűrő program macska - nem tesz semmit, hogy a bemeneti adatokat, hanem egyszerűen továbbítja a kimenetre.

Használata halmozott parancsok (konvejor)

Azt már kimutatták, hogyan kell használni a fajta, mint egy szűrő programot. Ezekben a példákban azt feltételezzük, hogy a kezdeti adatok vannak tárolva egy fájlt vagy a kezdeti adatok kerüljenek be a billentyűzeten (stdin). De mi van, ha azt szeretnénk, hogy rendezni az adatokat, amelyek eredményeként egy másik csapat, például ls?

Nézzük rendezheti az adatokat fordított ABC sorrendben; Ez az opció -r sort parancs. Ha azt szeretnénk, hogy sorolja fel a fájlokat az aktuális könyvtárban ábécé sorrendben visszafelé, az egyik módja ennek lenne olyan. Először a parancs ls:

Most kimenetét átirányítjuk az ls parancs nevű fájl file-list

Itt, a kimenet az ls parancs elmenti egy fájlba, majd a fájl feldolgozása megtörtént egyfajta -r paranccsal. De ez a módszer nehézkes és ezért szükség van egy ideiglenes fájl tárolja a program kimenete ls adatokat.

Határozata létrehozta a csatlakozott csapatok lehetnek ebben a helyzetben (csővezetékek). Dock biztosít shellparancsot hogy stdout az első parancs irányítja az stdin a második parancs. Ebben az esetben, azt akarjuk, hogy küldje el a stdout ls az stdin sort parancs. | Symbol használják dokkoló. amint az a következő példa:

Ez a parancs rövidebb, mint a parancs, és akkor könnyebb gépelni.

Vegyünk egy másik hasznos példa. csapat

Ez ad egy hosszú listát a fájlokat. A legtöbb ilyen lista ugrálni a képernyőn túl gyorsan tartalmának ezt a listát lehet olvasni. Próbáld meg használni a több paranccsal megjeleníthető az alkatrészek listáját:

Most ez lehet „flip” listán.

Akkor megy előre, és kiköthet több mint két csapat. Tekintsük a csapat vezetője. amely egy szűrőt következő tulajdonságokkal rendelkezik: megjeleníti az első sorhoz (ebben az esetben a bemenet kimenetet kapunk több egymásra parancsokat). Ha azt akarjuk, hogy megjelenjen az utolsó fájlnév alfabetikus sorrendben az aktuális könyvtárban, akkor a következő hosszú parancsot:

ahol a parancs fej -1 megjeleníti az első sorban a bemeneti húrok kapott, (ebben az esetben áll egy adatfolyamot a ls), abc szerint fordított sorrendben sorrendben.

Roncsolásmentes átirányítás

A hatás a> jel átirányítani a kimeneti fájl romboló hatású; Más szóval, a csapat

elpusztítják a file-list fájl tartalmát. Ha a fájl korábban létezett, és a helyén egy új fájl létrehozásához. Ha ehelyett az átirányítás kerül sor segítségével szimbólumok >>. kimenet van kijelölve, hogy a végén a fájlt, az eredeti fájl tartalmát nem kell semmisíteni. Például a parancs

tulajdonítja a következtetést az ls parancs fájl végére-fájlt.

Meg kell jegyezni, hogy átirányítja bemenet és kimenet, valamint stykovanie csapatok végzik shellparancsot, amely támogatja a szimbólumok használata> és >>. |. A parancsok önmagukban nem képesek érzékelni és értelmezni ezeket a szimbólumokat.