Input Output Redirection i Linux/Unix-eksempler
⚡ Smart oppsummering
Omdirigering i Linux og Unix endrer hvor en kommando leser input eller sender output, swapping tastaturet og skjermen for filer eller enheter som bruker operatorer som større enn-tegnet, mindre enn-tegnet og tilføyningsoperatoren.

Omdirigering er en av de mest nyttige funksjonene i Linux og Unix-skallet, fordi det lar deg bestemme hvor en kommando leser input og sender output. Denne siden forklarer output, input og omdirigering av feil med eksempler.
Hva er omdirigering?
Omdirigering er en funksjon i Linux som gjør at du kan endre standard inn- og utgangsenheter når du kjører en kommando. Den grunnleggende arbeidsflyten for enhver Linux kommando er at den tar imot en input og gir en output.
- Standardinngangsenheten (stdin) er tastaturet.
- Standard utgangsenhet (stdout) er skjermen.
Med omdirigering kan standard input og output ovenfor endres.
Omdirigering av utdata
Grafikken nedenfor markerer starten på eksemplene på omdirigering av utdata.
Symbolet '>' brukes for omdirigering av utdata (STDOUT).
Eksempel:
ls -al > listings
Her blir resultatet av kommandoen ls -al omdirigert til filen «listings» i stedet for skjermen din. Skjermbildet nedenfor viser resultatet.
Merk: Bruk riktig filnavn når du omdirigerer kommandoutdata til en fil. Hvis en fil med samme navn allerede finnes, sletter den omdirigerte kommandoen innholdet og overskriver det.
Hvis du ikke vil at en fil skal overskrives, men vil legge til mer innhold i en eksisterende fil, bruker du operatoren '>>'. Skjermbildet nedenfor viser innhold lagt til med '>>'.
Du kan omdirigere standardutdata ikke bare til filer, men også til enheter.
$ cat music.mp3 > /dev/audio
Katt-kommandoen leser musikkfilen.mp3 og sender utdataene til /dev/audio, som er lydenheten. Hvis lydkonfigurasjonen på PC-en din er riktig, spiller denne kommandoen av musikkfilen.mp3.
Input omdirigering
Grafikken nedenfor introduserer omdirigering av inndata.
Symbolet '<' brukes til omdirigering av input (STDIN).
Eksempel: E-postprogrammet i Linux kan hjelpe deg med å sende e-poster fra terminalen.
Du kan skrive innholdet i e-posten ved hjelp av tastaturet, standard inndataenhet. Men hvis du vil legge ved en fil i e-posten, kan du bruke omdirigeringsoperatoren for inndata i følgende format.
mail -s "Subject" to-address < Filename
Skjermbildet nedenfor viser mail-kommandoen som leser en fil som input.
Dette legger filen ved e-posten, og den sendes til mottakeren.
Eksemplene ovenfor var enkle. Se nå på noen avanserte omdirigeringsteknikker som bruker filbeskrivelser.
filet Descriptors (FD)
I Linux og Unix er alt en fil. Vanlige filer, kataloger og til og med enheter er filer. Hver fil har et tilknyttet nummer kalt en filbeskrivelse (FD).
Diagrammet nedenfor viser standardstrømmene og deres filbeskrivelser.
Skjermen din har også en filbeskrivelse. Når et program kjøres, sendes utdataene til filbeskrivelsen på skjermen, og du ser programutdataene på skjermen. Hvis utdataene ble sendt til skriverens filbeskrivelse, ville programutdataene blitt skrevet ut.
Feil omdirigering
Når du kjører et program eller en kommando i terminalen, er det alltid tre filer åpne, nemlig standard input, standard output og standard error.
Disse filene er alltid til stede når et program kjører. Som forklart tidligere, er en filbeskrivelse knyttet til hver av disse filene.
| filet | filet Descriptor |
|---|---|
| Standardinngang STDIN | 0 |
| Standard utgang STDOUT | 1 |
| Standardfeil STDERR | 2 |
Som standard vises feilstrømmen på skjermen. Omdirigering av feil ruter feilene til en annen fil enn skjermen.
Hvorfor feilomadressering?
Feilomdirigering er en av de svært populære funksjonene i Unix og Linux.
Hyppige Unix-brukere vet at mange kommandoer gir deg enorme mengder feil. For eksempel, når man søker etter filer, får man vanligvis tillatelse avviste feil, som vanligvis ikke hjelper personen som søker etter en bestemt fil. Når du kjører skallskript, vil du ofte ikke at feilmeldinger skal rote til den vanlige programutdataen.
Løsningen er å omdirigere feilmeldingene til en fil.
Eksempel 1
$ myprogram 2>errorsfile
Skjermbildet nedenfor viser denne kommandoen i terminalen.
Ovenfor kjører vi et program som heter mittprogram. Filbeskrivelsen for standardfeil er 2. Ved å bruke «2>» omdirigerer vi feilutdataene til en fil som heter «feilfil». Dermed blir ikke programutdataene overfylt med feil.
Eksempel 2
Her er et annet eksempel som bruker find-setningen.
find . -name 'my*' 2>error.log
Ved å bruke find-kommandoen søker vi i gjeldende katalog «.» etter en fil med navn som starter med «my», og sender eventuelle feil til error.log.
Eksempel 3: La oss se på et mer komplekst eksempel.
Serveradministratorer lister ofte opp kataloger og lagrer både feil- og standardutdata i en fil, som kan behandles senere. Her er kommandoen.
ls Documents ABC> dirlist 2>&1
Diagrammet nedenfor viser begge strømmingene som blir fanget opp i én fil.
Her:
- 2>&1 betyr at STDERR blir omdirigert til samme mål som STDOUT (som er filens dirlist).
- Feilutdataene blir omdirigert til standardutdata, som igjen blir omdirigert til filen dirlist. Derfor skrives begge strømmene til filen dirlist.
Diagrammet nedenfor oppsummerer hvordan input, output og feilomdirigering henger sammen.






.png)