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)