- STDIN (0) - Standardinngang
- STDOUT (1) - Standard utgang
- STDERR (2) - Standardfeil
Når vi skal jobbe med "pipe" -triks, vil "pipe" ta STDOUT av en kommando og overføre den til STDIN i neste kommando.
La oss sjekke ut noen av de vanligste måtene du kan innlemme "pipe" -kommandoen i din daglige bruk.
Rørkommando
Grunnleggende bruk
Det er bedre å utdype arbeidsmetoden for "pipe" med et live eksempel, ikke sant? La oss komme i gang. Følgende kommando vil fortelle “pacman”, standard pakkebehandling for Arch og alle Arch-baserte distroer, om å skrive ut alle installerte pakker på systemet.
pacman -Qqe
Det er en virkelig LANG liste over pakker. Hva med å plukke opp bare noen få komponenter? Vi kan bruke “grep”. Men hvordan? En måte kan være å dumpe utdataene til en midlertidig fil, "grep" ønsket utdata og slette filen. Denne oppgaveserien kan i seg selv gjøres om til et manus. Men vi skript bare for veldig store ting. La oss påkalle kraften til "rør" for denne oppgaven!
pacman -Qqe | grep
Fantastisk, ikke sant? "|" tegnet er kallet til "pipe" -kommandoen. Den griper STDOUT fra venstre seksjon og mater den inn i STDIN på høyre seksjon.
I det nevnte eksemplet passerte "pipe" -kommandoen faktisk utgangen på slutten av "grep" -delen. Slik spiller det ut.
pacman -Qqe> ~ / Desktop / pacman_package.tekstgrep python ~ / Desktop / pacman_package.tekst
Flere rør
I utgangspunktet er det ikke noe spesielt med den avanserte bruken av "pipe" -kommandoen. Det er helt opp til deg hvordan du bruker det.
La oss for eksempel starte med å stable flere rør.
pacman -Qqe | grep p | grep t | grep py
Pacman-kommandoutgangen filtreres lenger og lenger av "grep" gjennom en serie rørledninger.
Noen ganger, når vi jobber med innholdet i en fil, kan den være veldig, veldig stor. Det kan være vanskelig å finne ut riktig sted for ønsket oppføring. La oss søke etter alle oppføringene som inneholder sifre 1 og 2.
kattdemo.txt | grep -n 1 | grep -n 2
Manipulere liste over filer og kataloger
Hva du skal gjøre når du har å gjøre med en katalog med TONS filer? Det er ganske irriterende å bla gjennom hele listen. Visst, hvorfor ikke gjøre det mer utholdelig med rør? I dette eksemplet, la oss sjekke ut listen over alle filene i "/ usr / bin" -mappen.
ls -l
Her skriver “ls” ut alle filene og deres informasjon. Deretter sender "pipe" den til "mer" for å jobbe med det. Hvis du ikke visste, er "mer" et verktøy som gjør tekster til en skjermvisning om gangen. Imidlertid er det et gammelt verktøy, og ifølge den offisielle dokumentasjonen anbefales "mindre" mer.
ls -l / usr / bin | mindre
Sortering av utdata
Det er et innebygd verktøy "sorter" som tar tekstinndata og sorterer dem. Dette verktøyet er en ekte perle hvis du jobber med noe veldig rotete. For eksempel fikk jeg denne filen full av tilfeldige strenger.
kattdemo.tekst
Bare rør den for å "sortere".
kattdemo.txt | sortere
Det er bedre!
Skrive ut fyrstikker av et bestemt mønster
ls -l | finne ./ -type f -navn "*.txt "-exec grep 00110011 \;
Dette er en ganske vridd kommando, ikke sant? Først skriver “ls” ut listen over alle filene i katalogen. "Finn" -verktøyet tar utdataene, søker etter ".txt ”filer og innkaller“ grep ”for å søke etter“ 00110011 ”. Denne kommandoen vil sjekke hver eneste tekstfil i katalogen med TXT-utvidelsen og se etter kampene.
Skriv ut filinnhold i et bestemt område
Når du jobber med en stor fil, er det vanlig å ha behov for å sjekke innholdet i et bestemt område. Vi kan gjøre nettopp det med en smart kombinasjon av "katt", "hode", "hale" og selvfølgelig "rør". "Hode" -verktøyet sender ut den første delen av et innhold og "halen" gir den siste delen.
kattkatt
Unike verdier
Når du jobber med dupliserte utganger, kan det være ganske irriterende. Noen ganger kan dupliserte innspill forårsake alvorlige problemer. I dette eksemplet, la oss kaste "uniq" på en tekststrøm og lagre den i en egen fil.
Her er for eksempel en tekstfil som inneholder en stor liste med tall som er to sifre lange. Det er definitivt duplisert innhold her, ikke sant?
katt duplikat.txt | sortere
La oss nå utføre filtreringsprosessen.
katt duplikat.txt | sorter | uniq> unik.tekst
Sjekk utdataene.
flaggermus unik.tekst
Ser bedre ut!
Feilrør
Dette er en interessant rørmetode. Denne metoden brukes til å omdirigere STDERR til STDOUT og fortsette med rørene. Dette er betegnet med "| &" symbol (uten anførselstegn). La oss for eksempel lage en feil og sende utdataene til et annet verktøy. I dette eksemplet skrev jeg bare inn en tilfeldig kommando og sendte feilen til "grep".
adsfds | & grep n
Siste tanker
Selv om "pipen" i seg selv er ganske enkel, tilbyr den måten den fungerer på, en veldig allsidig måte å bruke metoden på uendelige måter. Hvis du er interessert i Bash-skripting, er det mye mer nyttig. Noen ganger kan du bare gjøre sprø ting direkte! Lær mer om Bash-skripting.