- STDIN (0) - vakiotulo
- STDOUT (1) - vakiolähtö
- STDERR (2) - vakiovirhe
Kun aiomme työskennellä "putki" -temppujen kanssa, "pipe" ottaa komennon STDOUT: n ja välittää sen seuraavan komennon STDIN: lle.
Katsotaanpa joitain yleisimpiä tapoja, joilla voit sisällyttää "pipe" -komennon päivittäiseen käyttöön.
Putkikomento
Peruskäyttö
On parempi tarkentaa "putken" toimintatapaa elävällä esimerkillä? Aloitetaan. Seuraava komento kehottaa "pacmania", Archin ja kaikkien Arch-pohjaisten distrojen oletuspakettien hallintaa, tulostamaan kaikki asennetut paketit järjestelmään.
pacman -Qqe
Se on todella PITKÄ pakettiluettelo. Entä vain muutaman komponentin poimiminen? Voisimme käyttää "grep". Mutta miten? Yksi tapa olisi polkea tuotos väliaikaiseen tiedostoon, "grep" haluttu tulos ja poistaa tiedosto. Tämä tehtäväsarja itsessään voidaan muuttaa käsikirjoitukseksi. Mutta käsikirjoitamme vain hyvin suuria asioita. Tähän tehtävään kutsutaan "putken" voimaa!
pacman -Qqe | grep
Mahtavaa, eikö olekin? "|" merkki on kutsu "pipe" -komennolle. Se tarttuu STDOUT: iin vasemmasta osasta ja syöttää sen oikean osan STDIN: ään.
Edellä mainitussa esimerkissä "pipe" -komento tosiasiallisesti ohitti lähdön "grep" -osan lopussa. Näin se toimii.
pacman -Qqe> ~ / Desktop / pacman_package.txtgrep python ~ / Desktop / pacman_package.txt
Useita putkistoja
Pohjimmiltaan "pipe" -komennon edistyneessä käytössä ei ole mitään erityistä. Sen käyttö on täysin sinun tehtäväsi.
Aloitetaan esimerkiksi pinomalla useita putkistoja.
pacman -Qqe | grep p | grep t | grep py
Pacman-komennon ulostulo suodatetaan yhä pidemmälle "grep" -sarjalla putkistojen läpi.
Joskus, kun käsittelemme tiedoston sisältöä, se voi olla todella, todella suuri. Halutun merkinnän oikean paikan löytäminen voi olla vaikeaa. Etsitään kaikki merkinnät, jotka sisältävät numeroita 1 ja 2.
kissan esittely.txt | grep -n 1 | grep -n 2
Tiedostojen ja hakemistojen luettelon käsittely
Mitä tehdä, kun käsittelet hakemistoa, jossa on TONS tiedostoa? On melko ärsyttävää selata koko luetteloa. Toki, miksi et tekisi siitä siedettävämpää putkella? Tarkastellaan tässä esimerkissä kaikkien / usr / bin -kansiossa olevien tiedostojen luettelo.
ls -l
Täällä “ls” tulostaa kaikki tiedostot ja niiden tiedot. Sitten "putki" siirtää sen "enemmän" työskentelemään sen kanssa. Jos et tiennyt, “lisää” on työkalu, joka muuttaa tekstit yhdeksi näyttökerraksi kerrallaan. Se on kuitenkin vanha työkalu ja virallisten asiakirjojen mukaan "vähemmän" suositellaan enemmän.
ls -l / usr / bin | Vähemmän
Tuotoksen lajittelu
Siellä on sisäänrakennettu työkalu "lajittelu", joka ottaa tekstinsyötön ja lajittelee ne. Tämä työkalu on todellinen helmi, jos työskentelet jotain todella sotkuista. Esimerkiksi sain tämän tiedoston täynnä satunnaisia merkkijonoja.
kissan esittely.txt
Pistä se vain "lajittelemaan".
kissan esittely.txt | järjestellä
Tuo on parempi!
Tietyn kuvion tulitikun tulostaminen
ls -l | löytö ./ -type f -nimi "*.txt "-exec grep 00110011 \;
Tämä on melko kierretty komento? Aluksi ”ls” antaa luettelon kaikista hakemiston tiedostoista. "Etsi" -työkalu ottaa tuloksen, etsii ".txt ”-tiedostot ja kutsuu“ grep ”etsimään sanaa“ 00110011 ”. Tämä komento tarkistaa jokaisen hakemiston tekstitiedoston TXT-laajennuksella ja etsii vastaavuudet.
Tulosta tietyn alueen tiedostosisältö
Kun työskentelet suuren tiedoston kanssa, on tavallista, että sinun on tarkistettava tietyn alueen sisältö. Voimme tehdä juuri tämän fiksulla "kissan", "pään", "hännän" ja tietysti "putken" yhdistelmällä. "Head" -työkalu tuottaa sisällön ensimmäisen osan ja "tail" viimeisen osan.
kissakissa
Ainutlaatuiset arvot
Kun työskentelet päällekkäisten lähtöjen kanssa, se voi olla melko ärsyttävää. Joskus päällekkäinen syöttö voi aiheuttaa vakavia ongelmia. Tässä esimerkissä heitetään “uniq” tekstivirralle ja tallennetaan se erilliseen tiedostoon.
Esimerkiksi tässä on tekstitiedosto, joka sisältää suuren luettelon numeroista, jotka ovat 2 merkkiä pitkiä. Täällä on ehdottomasti päällekkäistä sisältöä?
kissan kaksoiskappale.txt | järjestellä
Suoritetaan nyt suodatusprosessi.
kissan kaksoiskappale.txt | lajitella | uniq> ainutlaatuinen.txt
Tarkista lähtö.
lepakko ainutlaatuinen.txt
Näyttää paremmalta!
Virheputket
Tämä on mielenkiintoinen putkitusmenetelmä. Tätä menetelmää käytetään ohjaamaan STDERR STDOUT: iin ja jatkamaan putkistoa. Tämä on merkitty "| &" -symbolilla (ilman lainausmerkkejä). Luodaan esimerkiksi virhe ja lähetetään tulos muulle työkalulle. Tässä esimerkissä kirjoitin vain jonkin satunnaisen komennon ja välitin virheen "grep".
adsfds | & grep n
Lopulliset ajatukset
Vaikka itse "putki" on luonteeltaan melko yksinkertainen, sen toimintatapa tarjoaa erittäin monipuolisen tavan käyttää menetelmää äärettömillä tavoilla. Jos olet kiinnostunut Bash-komentosarjoista, se on paljon hyödyllisempi. Joskus voit vain tehdä hulluja asioita suoraan! Lisätietoja Bash-komentosarjoista.