Input Output Redirection i Linux/Unix eksempler
⚡ Smart opsummering
Omdirigering i Linux og Unix ændrer, hvor en kommando læser input eller sender output, swapping tastaturet og skærmen for filer eller enheder ved hjælp af operatorer som f.eks. større end-tegnet, mindre end-tegnet og tilføjningsoperatoren.

Omdirigering er en af de mest nyttige funktioner i Linux og Unix-shell, fordi den lader dig bestemme, hvor en kommando læser sit input og sender sit output hen. Denne side forklarer output, input og fejlomdirigering med eksempler.
Hvad er omdirigering?
Omdirigering er en funktion i Linux, der gør det muligt at ændre standard input- og output-enheder, når du udfører en kommando. Den grundlæggende arbejdsgang for enhver Linux kommando er, at den tager et input og giver et output.
- Standard input-enheden (stdin) er tastaturet.
- Standard output-enheden (stdout) er skærmen.
Med omdirigering kan standardinput og -output ovenfor ændres.
Output omdirigering
Grafikken nedenfor markerer starten på eksemplerne på omdirigering af output.
Symbolet '>' bruges til omdirigering af output (STDOUT).
Eksempel:
ls -al > listings
Her omdirigeres outputtet fra kommandoen ls -al til filen “listings” i stedet for din skærm. Skærmbilledet nedenfor viser resultatet.
Bemærk: Brug det korrekte filnavn, når du omdirigerer kommandoens output til en fil. Hvis en fil med samme navn allerede findes, sletter den omdirigerede kommando dens indhold og overskriver den derefter.
Hvis du ikke ønsker, at en fil skal overskrives, men ønsker at tilføje mere indhold til en eksisterende fil, skal du bruge operatoren '>>'. Skærmbilledet nedenfor viser indhold tilføjet med '>>'.
Du kan omdirigere standardoutput ikke kun til filer, men også til enheder.
$ cat music.mp3 > /dev/audio
Kommandoen `cat` læser `music`-filen.mp3 og sender outputtet til /dev/audio, som er lydenheden. Hvis lydkonfigurationen på din pc er korrekt, afspiller denne kommando filen music.mp3.
Input omdirigering
Grafikken nedenfor introducerer omdirigering af input.
Symbolet '<' bruges til omdirigering af input (STDIN).
Eksempel: Mailprogrammet i Linux kan hjælpe dig med at sende e-mails fra terminalen.
Du kan skrive indholdet af e-mailen ved hjælp af tastaturet, standardinputenheden. Men hvis du vil vedhæfte en fil til e-mailen, kan du bruge input-omdirigeringsoperatoren i følgende format.
mail -s "Subject" to-address < Filename
Skærmbilledet nedenfor viser mail-kommandoen, der læser en fil som input.
Dette vedhæfter filen til e-mailen, og den sendes til modtageren.
Eksemplerne ovenfor var enkle. Se nu på nogle avancerede omdirigeringsteknikker, der bruger filbeskrivelser.
File (Felt) Descriptors (FD)
I Linux og Unix er alting en fil. Almindelige filer, mapper og endda enheder er filer. Hver fil har et tilknyttet nummer kaldet en fildeskriptor (FD).
Diagrammet nedenfor viser standardstrømmene og deres filbeskrivelser.
Din skærm har også en filbeskrivelse. Når et program udføres, sendes outputtet til skærmens filbeskrivelse, og du ser programoutputtet på din skærm. Hvis outputtet blev sendt til printerens filbeskrivelse, ville programoutputtet blive udskrevet.
Fejlomdirigering
Når du udfører et program eller en kommando i terminalen, er der altid tre filer åbne, nemlig standardinput, standardoutput og standardfejl.
Disse filer er altid til stede, når et program kører. Som forklaret tidligere er der knyttet en filbeskrivelse til hver af disse filer.
| File (Felt) | File (Felt) Descriptor |
|---|---|
| Standardindgang STDIN | 0 |
| Standard output STDOUT | 1 |
| Standardfejl STDERR | 2 |
Som standard vises fejlstrømmen på skærmen. Fejlomdirigering sender fejlene til en anden fil end skærmen.
Hvorfor fejlomdirigering?
Fejlomdirigering er en af de meget populære funktioner i Unix og Linux.
Hyppige Unix-brugere vil vide, at mange kommandoer giver dig enorme mængder fejl. For eksempel, når man søger efter filer, får man typisk tilladelse afviste fejl, som normalt ikke hjælper den person, der søger efter en bestemt fil. Når man udfører shell-scripts, ønsker man ofte ikke, at fejlmeddelelser roder til det normale programoutput.
Løsningen er at omdirigere fejlmeddelelserne til en fil.
Eksempel 1
$ myprogram 2>errorsfile
Skærmbilledet nedenfor viser denne kommando i terminalen.
Ovenfor udfører vi et program med navnet mitprogram. Filbeskrivelsen for standardfejl er 2. Ved at bruge "2>" omdirigerer vi fejloutputtet til en fil med navnet "fejlfil". Således er programoutputtet ikke fyldt med fejl.
Eksempel 2
Her er et andet eksempel, der bruger find-sætningen.
find . -name 'my*' 2>error.log
Ved at bruge find-kommandoen søger vi i den aktuelle mappe “.” efter en fil, hvis navn starter med “my”, og sender eventuelle fejl til error.log.
Eksempel 3: Lad os se på et mere komplekst eksempel.
Serveradministratorer viser ofte mapper og gemmer både fejl- og standardoutput i en fil, som kan behandles senere. Her er kommandoen.
ls Documents ABC> dirlist 2>&1
Diagrammet nedenfor viser, at begge streams bliver optaget i én fil.
Her:
- 2>&1 betyder, at STDERR omdirigeres til samme mål som STDOUT (som er filens dirlist).
- Fejloutputtet omdirigeres til standardoutputtet, som igen omdirigeres til filen dirlist. Derfor skrives begge streams til filen dirlist.
Diagrammet nedenfor opsummerer, hvordan input, output og fejlomdirigering hænger sammen.






.png)