To kraftige funksjoner i Linux-kommandolinjeskallet er omdirigering og rør som tillater utdata (eller til og med inngang) av et program som skal sendes til en fil eller et annet program. Du har kanskje allerede brukt disse funksjonene uten å være klar over det. Når du har brukt " > " -tegnet i en kommando eller " | "Da har du brukt omdirigering eller et rør, henholdsvis.

På alle Unix-lignende operativsystemer, som Linux og FreeBSD, går utgangen fra et kommandolinjeprogram automatisk til et sted kjent som standardutgang (stdout). Som standard er standard ut skjermen (konsollen), men den kan endres ved hjelp av rør og omdirigering. På samme måte betraktes tastaturet som standardinngangen (stdin), og som med standard ut, kan det endres.

rør

Rør tillater deg å trekke utgangen fra en kommando til en annen hvor den vil bli brukt som inngang. Med andre ord blir standardutgangen fra ett program standardinngangen til en annen.

Kommandoen " more " tar standardinngangen og paginerer den på standardutgangen (skjermen). Dette betyr at hvis en kommando viser mer informasjon enn det som kan vises på ett skjermbilde, vil « more » -programmet pause etter den første skjermen full (side) og vente på at brukeren trykker på SPACE for å se neste side eller RETURN for å se neste linje.

Her er et eksempel som vil liste alle filene, med detaljer ( -la ) i /dev katalogen og rør utgangen til more . Kataloget /dev skal ha dusinvis av filer og dermed sikre at more må paginere.

 ls -la / dev | mer 

Legg merke til --More-- nederst på skjermen. Trykk på SPACE for å se neste side og fortsett å trykke SPACE til utgangen er ferdig.

Her er et annet røreksempel, denne gangen med verktøyet " wc " (word count).

 ls -1 / dev | toalett 

wc teller antall linjer, ord og tegn i standardinngangen. Hvis du bruker parameteren -l, vises bare antall linjer, noe som er en god måte å se hvor mange filer som er i en katalog!

The Depth Se på Linuxs Arkiverings- og Komprimeringskommandoer opplæring har et eksempel med å bruke tar og 7-Zip sammen:

 tjære cvf - * | 7zr a -si somefiles.tar.7z 

I dette tilfellet forteller bindestrek etter f alternativet tar å sende sin utgang til standard ut og ikke til en fil. Utgangen fra tar vil bli matet ned i røret til 7zr som venter på inngang fra standard på grunn av -si-alternativet.

omdirigering

Omdirigering ligner rør uten bruk av filer i stedet for et annet program. Standardutgangen for et program er skjermen. Ved hjelp av > (større enn) symbolet kan utgangen av et program sendes til en fil. Her er en katalogoppføring av /dev igjen, men denne gangen omdirigert til en fil som heter listing.txt

 ls -la> listing.txt 

Det blir ikke noe som vises på terminalen som alt ble sendt til filen. Du kan ta en titt på filen ved hjelp av cat (som kan røres inn i more ) eller for enkelhets skyld kan du bare bruke more command på egenhånd:

 mer listing.txt 

Hvis listing.txt allerede hadde eksistert, blir det overskrevet. Men du kan legge til en eksisterende fil ved hjelp av >> slik:

 ls -la / home> listing.txt ls -la / dev >> listing.txt 

Den første omadresseringen overskriver filen listing.txt mens den andre vil legge til den.

Kattkommandoen kan brukes til å lage en fil ved hjelp av omdirigering, for eksempel:

 katt> atextfile.txt 

Nå vil hvilken tekst du skriver, sendes til filen atextfile.txt til du trykker på Control-D, da vil filen bli lukket og du vil bli returnert til kommandoprompten. Hvis du vil legge til mer tekst i filen, bruk samme kommando, men med to større enn tegn ( >> ).

Konklusjon

Mange av Linux-kommandolinjeprogrammer er utviklet for å jobbe med omdirigering og rør, prøv å eksperimentere med dem og se hvordan de samhandler. For eksempel kan utgangen av ps kommandoen, som viser de nåværende prosessene, bli pipet inn i grep . Se om du kan finne ut hvordan du lister prosessene som eies av rot.