- STDIN (0) - Normál bemenet
- STDOUT (1) - Normál kimenet
- STDERR (2) - Standard hiba
Amikor „pipa” trükkökkel fogunk dolgozni, a „pipe” elveszi a parancs STDOUT-ját, és továbbítja a következő parancs STDIN-jének.
Nézzük meg a „pipe” parancs beépítésének leggyakoribb módjait a mindennapi használatba.
Cső parancs
Alapvető használat
Jobb, ha a „cső” munkamódszerét egy élő példával részletezzük, igaz? Kezdjük el. A következő parancs megadja a „pacman” -nek, az Arch alapértelmezett csomagkezelőjének és az összes Arch-alapú disztribúciónak, hogy nyomtassa ki a rendszer összes telepített csomagját.
pacman -Qqe
Ez valóban HOSSZÚ csomagok listája. Hogyne, csak néhány alkatrész felvétele? Használhatnánk a „grep” -t. De hogyan? Az egyik módszer a kimenet ideiglenes fájlba történő dömpingje, a kívánt kimenet „grepelése” és törlése. Ez a feladatsor önmagában forgatókönyvvé alakítható. De csak nagyon nagy dolgokra írunk forgatókönyveket. Ehhez a feladathoz hívjuk fel a „cső” erejét!
pacman -Qqe | grep
Félelmetes, nem igaz? A „|” jel a „pipa” parancs hívása. Fogja az STDOUT-ot a bal oldali szakaszból, és betáplálja a jobb oldali szakasz STDIN-be.
Az előbb említett példában a „pipe” parancs valóban átadta a kimenetet a „grep” rész végén. Így játszik.
pacman -Qqe> ~ / Asztal / pacman_package.txtgrep python ~ / Desktop / pacman_package.txt
Többszörös csövezés
Alapvetően semmi különös a „pipe” parancs fejlett használatával. Teljesen rajtad múlik, hogyan kell használni.
Kezdjük például azzal, hogy több csővezetéket egymásra rakunk.
pacman -Qqe | grep p | grep t | grep py
A pacman parancs kimenetét a grep segítségével tovább és egy csővezeték-sorozaton keresztül szűrjük.
Néha, amikor egy fájl tartalmával dolgozunk, az valóban nagyon nagy lehet. Nehéz lehet megtalálni a kívánt bejegyzés megfelelő helyét. Keressük meg az összes bejegyzést, amely az 1. és 2. számjegyet tartalmazza.
macska bemutató.txt | grep -n 1 | grep -n 2
A fájlok és könyvtárak listájának kezelése
Mi a teendő, ha olyan könyvtárral foglalkozol, amelyben TONS fájl található? Elég bosszantó végiggörgetni a teljes listát. Persze, miért ne lehetne elviselhetőbbé tenni a csővel? Ebben a példában nézzük meg az összes fájl listáját a / / usr / bin mappában.
ls -l
Itt az „ls” kinyomtatja az összes fájlt és azok adatait. Ezután a „cső” átadja „többnek”, hogy ezzel dolgozzon. Ha nem tudná, a „több” olyan eszköz, amely a szövegeket egyszerre egy képernyős nézetté alakítja. Ez azonban egy régi eszköz, és a hivatalos dokumentáció szerint a „kevesebb” ajánlottabb.
ls -l / usr / bin | Kevésbé
Kimenet rendezése
Van egy beépített eszköz, amely rendezi a szövegbevitelt és rendezi őket. Ez az eszköz igazi gyöngyszem, ha valami igazán rendetlen dologgal dolgozik. Például kaptam ezt a fájlt véletlenszerű karakterláncokkal.
macska bemutató.txt
Csak pipázza, hogy „válogasson”.
macska bemutató.txt | fajta
Ez jobb!
Egy adott minta gyufa nyomtatása
ls -l | megtalálja ./ -type f -name "*.txt "-exec grep 00110011 \;
Ez egy nagyon csavart parancs, igaz? Eleinte az „ls” kiadja a könyvtár összes fájljának listáját. A „keresés” eszköz megkapja a kimenetet, a „.txt ”fájlokat, és felhívja a“ grep ”szót a“ 00110011 ”keresésre. Ez a parancs ellenőrzi a TXT kiterjesztésű könyvtár minden egyes szövegfájlját, és megkeresi az egyezéseket.
Egy adott tartomány fájltartalmának nyomtatása
Ha nagy fájlokkal dolgozik, gyakran előfordul, hogy ellenőrizni kell egy bizonyos tartomány tartalmát. Csak a "macska", a "fej", a "farok" és természetesen a "pipa" okos kombinációjával tehetjük meg. A „head” eszköz kiadja a tartalom első részét, a „tail” pedig az utolsó részét.
macskamacska
Egyedi értékek
Ha duplikált kimenettel dolgozunk, ez elég idegesítő tud lenni. Néha az ismétlődő bemenet komoly problémákat okozhat. Ebben a példában vessünk egy „uniq” szót egy szövegfolyamra, és mentsük el egy külön fájlba.
Például itt van egy szöveges fájl, amely nagy számlistát tartalmaz, amelyek 2 számjegy hosszúak. Itt bizonyosan vannak duplikált tartalmak, ugye?
macskamásolat.txt | fajta
Most végezzük el a szűrési folyamatot.
macskamásolat.txt | rendezés | uniq> egyedi.txt
Ellenőrizze a kimenetet.
denevér egyedi.txt
Jobban néz ki!
Hibacsövek
Ez egy érdekes csövezési módszer. Ezt a módszert használják az STDERR átirányítására az STDOUT-ra és a csővezeték folytatásához. Ezt "| &" szimbólum jelöli (idézőjelek nélkül). Hozzunk létre például egy hibát, és küldjük el a kimenetet valamilyen más eszköznek. Ebben a példában csak beírtam egy véletlenszerű parancsot, és átadtam a hibát a "grep" -nek.
adsfds | & grep n
Végső gondolatok
Míg maga a „cső” meglehetősen leegyszerűsítő jellegű, működése nagyon sokoldalú módszert kínál a módszer végtelen felhasználására. Ha Bash szkriptekkel foglalkozik, akkor azok sokkal hasznosabbak. Néha egyszerűen egyenesen őrültségeket csinálhat! További információ a Bash szkriptekről.