To kraftfulde funktioner i Linux-kommandolinjeskallen er omdirigering og rør, der tillader output (eller endda input) af et program, der skal sendes til en fil eller et andet program. Du har muligvis allerede brugt disse funktioner uden at være opmærksom på det. Når du har brugt " > " -tegnet i en kommando eller " | "Så har du brugt omdirigering eller et rør, henholdsvis.

På alle Unix-lignende operativsystemer, som Linux og FreeBSD, går output fra et kommandolinjeprogram automatisk til et sted kendt som standard output (stdout). Som standard er standardbilledet skærmbilledet (konsollen), men det kan ændres ved hjælp af rør og omdirigering. Ligeledes betragtes tastaturet som standardindgangen (stdin) og som med standard ud, kan det ændres.

Rør

Rør giver dig mulighed for at trække output fra en kommando til en anden, hvor den vil blive brugt som input. Med andre ord bliver standardudgangen fra et program standardindgangen til en anden.

Kommandoen " more " tager standardindgangen og paginerer den på standardudgangen (skærmen). Dette betyder, at hvis en kommando viser mere information end det, der vises på en skærm, vil " more " programmet standse efter det første skærmbillede (side) og vente på, at brugeren trykker på SPACE for at se den næste side eller RETURN for at se næste linje.

Her er et eksempel, som vil liste alle filer, med detaljer ( -la ) i /dev biblioteket og rør output til more . /dev skal have snesevis af filer og dermed sikre, at more skal paginere.

 ls -la / dev | mere 

Bemærk --More-- -prompten nederst på skærmen. Tryk på SPACE for at se den næste side, og tryk på SPACE indtil udgangen er færdig.

Her er et andet røreksempel, denne gang ved hjælp af værktøjet " wc " (ordtælling).

 ls -1 / dev | Toilet 

wc tæller antallet af linjer, ord og tegn i standardindgangen. Hvis du bruger parameteren -l, vil det kun vise antallet af linjer, hvilket er en god måde at se, hvor mange filer der er i en mappe!

The Depth Kig på Linux's Arkiverings- og Komprimeringskommandoer-tutorial indeholder et eksempel med tar og 7-zip sammen:

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

I dette tilfælde fortæller bindestregen efter f optionen, at tar skal sende sin output til standard ud og ikke til en fil. Udgangen fra tar vil blive fodret ned i røret til 7zr, som venter på input fra standard på grund af -si-indstillingen.

omdirigering

Omdirigering svarer til rør undtagen ved brug af filer i stedet for et andet program. Standardudgangen til et program er skærmen. Ved hjælp af > (større end) symbolet kan output fra et program sendes til en fil. Her er en listing.txt over /dev igen, men denne gang omdirigeret til en fil, der hedder listing.txt

 ls -la> listing.txt 

Der vises ikke noget på terminalen, da alt blev sendt til filen. Du kan kigge på filen ved hjælp af kommandoen cat (som kan pipes til more ) eller for nemheds skyld kan du bare bruge more command på egen hånd:

 mere listing.txt 

Hvis listing.txt allerede havde eksisteret, overskrives det. Men du kan føje til en eksisterende fil ved hjælp af >> som denne:

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

Den første omdirigering overskriver filen listing.txt mens den anden vil tilføre den.

cat kommandoen kan bruges til at oprette en fil ved hjælp af omdirigering, for eksempel:

 cat> atextfile.txt 

Nu bliver den tekst, du skriver, sendt til filen atextfile.txt indtil du trykker Control-D, hvorefter filen lukkes, og du vil blive returneret til kommandoprompten. Hvis du vil tilføje mere tekst til filen, brug samme kommando men med to større end tegn ( >> ).

Konklusion

Mange af Linux-kommandolinjeprogrammer er designet til at arbejde med omdirigering og rør, forsøge at eksperimentere med dem og se, hvordan de interagerer. For eksempel kan udgangen af ps kommandoen, som viser de nuværende processer, ledes til grep . Se om du kan finde ud af, hvordan du kan liste de processer, der ejes af root.