Linux Pipe Command

Linux Pipe Command
Denne “Pipe” -kommandoen er lett tilgjengelig på UNIX/Linux -plattformer. Denne kommandoen piperer utgangen fra den forrige kommandoen til neste kommando. Det er bokstavelig talt mange situasjoner der denne metoden gir alvorlig verdi.Før du hopper dypere, er det noe å vite om. Hvert enkelt program i UNIX/Linux-systemet har 3 innebygde datastrømmer.
  • STDIN (0) - Standardinngang
  • Stdout (1) - Standardutgang
  • STDERR (2) - Standardfeil

Når vi skal jobbe med "pipe" -triks, vil "pipe" ta stdout av en kommando og sende den til stdin av 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 "rør" med et live -eksempel, høyre? La oss komme i gang. Følgende kommando vil fortelle “Pacman”, standard pakkeansvarlig for Arch og alle de erkebaserte distrosene, for å skrive ut alle de installerte pakkene på systemet.

Pacman -qqe

Det er en veldig lang liste med pakker. Hvordan, med å plukke opp bare noen få komponenter? Vi kunne bruke “grep”. Men hvordan? En måte ville være å dumpe utdataene til en midlertidig fil, "grep" den ønskede utgangen og slette filen. Denne serien med oppgaver kan i seg selv gjøres om til et skript. Men vi skriver bare for veldig store ting. For denne oppgaven, la oss påkalle kraften til "rør"!

PACMAN -QQE | grep

Fantastisk, er det ikke? “|” Sign er samtalen til “Pipe” -kommandoen. Den griper stdout fra venstre del og mater den inn i stdin i høyre del.

I det nevnte eksemplet passerte “Pipe” -kommandoen faktisk utgangen på slutten av "grep" -delen. Slik spiller det ut.

pacman -qqe> ~/desktop/pacman_package.tekst
grep 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 om hvordan du bruker det.

La oss for eksempel starte med å stable flere rør.

PACMAN -QQE | grep p | grep t | grep py

Pacman -kommandoproduksjonen filtreres videre og videre av “grep” gjennom en serie med rør.

Noen ganger, når vi jobber med innholdet i en fil, kan det være virkelig, virkelig stort. Det kan være vanskelig å finne ut det rette stedet for ønsket oppføring. La oss søke etter alle oppføringene som inkluderer sifre 1 og 2.

Cat Demo.txt | grep -n 1 | grep -n 2

Manipulering av liste over filer og kataloger

Hva du skal gjøre når du arbeider med en katalog med mange filer i den? Det er ganske irriterende å bla gjennom hele listen. Jada, 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 | mer

Her skriver “LS” ut alle filene og deres informasjon. Da overfører "rør" det til "mer" for å jobbe med det. Hvis du ikke visste det, er "mer" et verktøy som gjør tekster til ett skjermer visning om gangen. Imidlertid er det et gammelt verktøy, og i henhold til den offisielle dokumentasjonen anbefales "mindre" mer.

ls -l /usr /bin | mindre

Sorteringsutgang

Det er et innebygd verktøy "sortering" som vil ta tekstinngang og sortere dem ut. Dette verktøyet er en ekte perle hvis du jobber med noe veldig rotete. For eksempel fikk jeg denne filen full av tilfeldige strenger.

Cat Demo.tekst

Bare rør den til "Sorter".

Cat Demo.txt | sortere

Det er bedre!

Utskriftskamper av et bestemt mønster

ls -l | finne ./ -Type F -Name "*.txt "-exec grep 00110011 \;

Dette er en ganske vridd kommando, ikke sant? Til å begynne med sender "LS" listen over alle filer i katalogen. "Finn" -verktøyet tar utgangen, søker etter ".TXT ”-filer og tilkaller“ 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 "pipe". "Head" -verktøyet sender ut den første delen av et innhold og "hale" gir den siste delen.

katt | Hode -6
katt | hale -6

Unike verdier

Når du jobber med dupliserte utganger, kan det være ganske irriterende. Noen ganger kan duplikatinngang forårsake alvorlige problemer. I dette eksemplet, la oss kaste "uniq" på en tekststrøm og lagre den i en egen fil.

For eksempel her er en tekstfil som inneholder en stor liste med tall som er 2 sifre lang. Det er definitivt duplikatinnhold her, ikke sant?

Cat Duplicate.txt | sortere

La oss nå utføre filtreringsprosessen.

Cat Duplicate.txt | Sorter | uniq> unik.tekst

Sjekk ut 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ørledningen. Dette er betegnet med “| &” -symbol (uten sitater). La oss for eksempel opprette en feil og sende utdataene til et annet verktøy. I dette eksemplet skrev jeg nettopp noen tilfeldige kommandoer og ga feilen til “grep”.

adsfds | & grep n

Siste tanker

Mens "Pipe" i seg selv er ganske forenklet, er måten den fungerer veldig allsidig måte å bruke metoden på uendelige måter. Hvis du er i bash -skripting, er det mye mer nyttig. Noen ganger kan du bare gjøre sprø ting direkte! Lær mer om bashskripting.