Pipe Unix Tutorial

Pipe Unix Tutorial


UNIX-kommandoen rør fungerer som en fysisk rør. Den kobler to UNIX-kommandoer og dermed muliggjør en enveis flyt av data. Som en fysisk rør, som kontrollerer strømmen av fluid, gir røret kommando brukere kontroll av produksjonen av kommandoene blir utført.

Grunnleggende

Pipe Unix Tutorial


Akkurat som en fysisk felles av to rørledninger som gir en illusjon av en sammenhengende rør, røret kommandoen (|) kan to UNIX kommandoer arbeide sammen. For eksempel:

$ cat abc.txt | wc --l
23

UNIX-kommandoen "cat" brukes til å hente innholdet i en fil, mens "wc -l" kommandoen gjør en ordtelling av inngangs strøm av ord. Røret kommandoen "|" i dette eksempel passerer produksjon av "katt" av fil abc.txt (som viser seg at innholdet av filen abc.txt) til "wc - l", som utfører et antall ord på innholdet. I eksemplet, er resultatet 23, noe som betyr at filen abc.txt inneholder 23 ord. Hvis disse kommandoene ble henrettet hver for seg, ville det være vanskelig å telle antall ord i filen abc.txt. Pipe lar brukeren oppnå dette ved å kombinere de to kommandoer.

I en fysisk rørledningsskjøt, kan utgangen av en rør ikke være den samme som inngangen for den andre rør, som vist på diagrammet. Tilsvarende i UNIX, er det mulig at utgangsstørrelsen av en kommando ikke kan matche inngangsstørrelsen av den andre. Røret kommandoen gir deg muligheten til å kontrollere flyten. Dersom en kommando virker raskere enn den andre, justerer den strømmen. For eksempel:

$ ls | more

De "ls" kommandoen lister innholdet i en katalog. Dette kan imidlertid resultere i overkant utgang på terminalen hvis katalogen består av mange filer. Derfor, for å styre produksjonen og gjøre mer følelse av det, røret kommando (|) brukes til å passere dette utgang til en annen kommando, "mer" (som begrenser utgangs til en side). Dette resulterer i at utgangen er vist i en side. Bare når brukeren trykker "Enter" er den neste siden av produksjonen vist.

fleksibilitet

Røret kommandoen har evnen til å være mer enn to UNIX kommandoer, noe som gir mer fleksibilitet for brukeren. Men for å bruke denne, bør brukerne vet hva de vil samlet og hva den enkelte kommandoene gjør. For eksempel:

$ls | grep ^d | grep notes | wc --l

Kommandoen ovenfor har til hensikt å finne alle underkataloger inne i en katalog som inneholder ordet "notater" i dem og deretter gjør en ordtelling. Dette gjøres ved kombinasjonen av de fire kommandoer som vist ovenfor. Den første kommandoen "ls", viser innholdet i den gjeldende katalogen. Den andre kommandoen "grep ^ d," finner underkataloger fra denne listen. Den tredje kommandoen "grep notater," finner underkataloger som inneholder ordet "notater." Den fjerde kommando, "wc --l," ikke et ord telle fra utgangen.

Hovedpoenget å huske mens du bruker røret kommandoen er at produksjonen fra kommando til venstre til standard ut og innspill til kommandoen til høyre er fra standard input. Så hvis det er UNIX-kommandoer som sender utganger ikke til standard utganger (terminaler, for eksempel) i hvilken kommandoen er kjørt, røret kommandoen bør ikke brukes.

programmering

Rørledninger kan opprettes i C / C ++ programmer, også, ved hjelp av røret () -metoden. Denne samtalen skaper en pipe objektet, som skaper to nye fildeskriptorer, fd1 og FD2. En lese fra fd1 gir tilgang til data skrives til FD2 på en FIFO (First In First Out) basis, og en lese fra FD2 gir tilgang til data skrives til FD2 etter FIFO-prinsippet.