- STDIN (0) - Standardindgang
- STDOUT (1) - Standard output
- STDERR (2) - Standardfejl
Når vi arbejder med "rør" -triks, tager "rør" STDOUT af en kommando og sender den til STDIN i den næste kommando.
Lad os tjekke nogle af de mest almindelige måder, du kan indarbejde kommandoen "pipe" i din daglige brug.
Rørkommando
Grundlæggende brug
Det er bedre at uddybe arbejdsmetoden med "rør" med et levende eksempel, ikke sandt? Lad os komme igang. Følgende kommando vil fortælle “pacman”, standardpakkehåndtering for Arch og alle de Arch-baserede distroer, at udskrive alle de installerede pakker på systemet.
pacman -Qqe
Det er en rigtig LANG liste over pakker. Hvad med at hente kun et par komponenter? Vi kunne bruge “grep”. Men hvordan? En måde ville være at dumpe output til en midlertidig fil, "grep" den ønskede output og slette filen. Denne række opgaver kan i sig selv omdannes til et script. Men vi script kun til meget store ting. Lad os til denne opgave påkalde kraften fra "rør"!
pacman -Qqe | grep
Fantastisk, er det ikke?? "|" tegn er opkaldet til "pipe" kommandoen. Den griber STDOUT fra venstre sektion og føder den ind i STDIN for højre sektion.
I det ovennævnte eksempel passerede kommandoen "pipe" faktisk output i slutningen af "grep" -delen. Sådan spiller det ud.
pacman -Qqe> ~ / Desktop / pacman_package.txtgrep python ~ / Desktop / pacman_package.txt
Flere rør
Dybest set er der ikke noget særligt med den avancerede brug af kommandoen “pipe”. Det er helt op til dig, hvordan du bruger det.
Lad os for eksempel starte med at stable flere rør.
pacman -Qqe | grep p | grep t | grep py
Pacman-kommandooutputtet filtreres længere og længere af “grep” gennem en række rørledninger.
Nogle gange, når vi arbejder med indholdet af en fil, kan den være virkelig, virkelig stor. Det kan være svært at finde ud af det rigtige sted for vores ønskede indrejse. Lad os søge efter alle de poster, der indeholder cifre 1 og 2.
kat demo.txt | grep -n 1 | grep -n 2
Manipulerer liste over filer og mapper
Hvad skal du gøre, når du har at gøre med et bibliotek med TONS filer i det? Det er ret irriterende at rulle gennem hele listen. Sikker på, hvorfor ikke gøre det mere tåleligt med rør? Lad os i dette eksempel tjekke listen over alle filerne i mappen "/ usr / bin".
ls -l
Her udskriver “ls” alle filer og deres info. Derefter sender "rør" det til "mere" for at arbejde med det. Hvis du ikke vidste, er "mere" et værktøj, der forvandler tekster til en skærmvisning ad gangen. Det er dog et gammelt værktøj, og ifølge den officielle dokumentation anbefales "mindre" mere.
ls -l / usr / bin | mindre
Sortering af output
Der er et indbygget værktøj "sorter", der tager tekstinput og sorterer dem. Dette værktøj er en rigtig perle, hvis du arbejder med noget virkelig rodet. For eksempel fik jeg denne fil fuld af tilfældige strenge.
kat demo.txt
Bare rør det for at "sortere".
kat demo.txt | sortere
Det er bedre!
Udskrivning af matches af et bestemt mønster
ls -l | finde ./ -type f -navn "*.txt "-exec grep 00110011 \;
Dette er en ret snoet kommando, ikke? Først udsender “ls” listen over alle filer i biblioteket. "Find" -værktøjet tager output, søger efter ".txt ”filer og indkaldelse“ grep ”for at søge efter“ 00110011 ”. Denne kommando kontrollerer hver enkelt tekstfil i biblioteket med TXT-udvidelsen og ser efter matches.
Udskriv filindhold i et bestemt område
Når du arbejder med en stor fil, er det almindeligt at have behov for at kontrollere indholdet af et bestemt område. Vi kan gøre netop det med en smart kombination af "kat", "hoved", "hale" og selvfølgelig "rør". Værktøjet "head" udsender den første del af et indhold, og "tail" output den sidste del.
katkat
Unikke værdier
Når du arbejder med duplikerede output, kan det være ret irriterende. Nogle gange kan duplikeret input forårsage alvorlige problemer. Lad os i dette eksempel kaste "uniq" på en tekststrøm og gemme den i en separat fil.
For eksempel er her en tekstfil, der indeholder en stor liste med tal, der er 2 cifre lange. Der er bestemt duplikatindhold her, ikke?
kat duplikat.txt | sortere
Lad os nu udføre filtreringsprocessen.
kat duplikat.txt | sorter | uniq> unik.txt
Tjek output.
bat unik.txt
Ser bedre ud!
Fejlrør
Dette er en interessant rørmetode. Denne metode bruges til at omdirigere STDERR til STDOUT og fortsætte med rørledningen. Dette betegnes med symbolet "| &" (uden anførselstegn). Lad os for eksempel oprette en fejl og sende output til et andet værktøj. I dette eksempel skrev jeg bare en tilfældig kommando og sendte fejlen til "grep".
adsfds | & grep n
Afsluttende tanker
Selvom "pipe" i sig selv er ret forenklet, tilbyder den måde, det fungerer på, en meget alsidig måde at bruge metoden på uendelige måder. Hvis du er interesseret i Bash-scripting, er det meget mere nyttigt. Nogle gange kan du bare gøre skøre ting direkte! Lær mere om Bash-scripting.