Input Output Redirection i Linux/Unix eksempler
Hvad er omdirigering?
Omdirigering er en funktion i Linux, sรฅ nรฅr du udfรธrer en kommando, kan du รฆndre standardinput/outputenhederne. Den grundlรฆggende arbejdsgang for evt Linux kommando er, at det tager et input og giver et output.
- Standard input-enheden (stdin) er tastaturet.
- Standard output-enheden (stdout) er skรฆrmen.
Med omdirigering kan ovenstรฅende standard input/output รฆndres.
Klik link. hvis videoen ikke er tilgรฆngelig
Output omdirigering
'>' symbol bruges til output (STDOUT) omdirigering.
Eksempel:
ls -al > listings
Her bliver outputtet af kommandoen ls -al omdirigeret til fil "lister" i stedet for din skรฆrm.
Bemรฆrk: Brug det korrekte filnavn, mens du omdirigerer kommandooutput til en fil. Hvis der er en eksisterende fil med samme navn, vil den omdirigerede kommando slette indholdet af den fil, og den kan blive overskrevet."
Hvis du ikke รธnsker at en fil skal overskrives, men รธnsker at tilfรธje mere indhold til en eksisterende fil, sรฅ skal du bruge '>>' operatรธr.
Du kan omdirigere standardoutput til ikke kun filer, men ogsรฅ enheder!
$ cat music.mp3 > /dev/audio
Kat-kommandoen lรฆser filen music.mp3 og sender outputtet til /dev/audio, som er lydenheden. Hvis lydkonfigurationerne pรฅ din pc er korrekte, vil denne kommando afspille filen music.mp3
Input omdirigering
'' symbol bruges til input(STDIN) omdirigering
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 standardenhedens tastatur. Men hvis du vil vedhรฆfte en fil til e-mail, kan du bruge input-omdirigeringsoperatoren i fรธlgende format.
Mail -s "Subject" to-address < Filename
Dette ville vedhรฆfte filen med e-mailen, og den ville blive sendt til modtageren.
Ovenstรฅende eksempler var enkle. Lad os se pรฅ nogle avancerede omdirigeringsteknikker, der gรธr brug af File Descripteller.
File (Felt) Descriptors (FD)
I Linux/Unix er alt en fil. Almindelige filer, mapper og endda enheder er filer. Hver fil har et tilknyttet nummer kaldet fil Descripteller (FD).
Din skรฆrm har ogsรฅ en fil Descripteller. Nรฅr et program kรธres, sendes output til Fil Descripteller pรฅ skรฆrmen, og du ser programoutput pรฅ din skรฆrm. Hvis outputtet sendes til Fil Descripteller af printeren, ville programmets output vรฆre blevet udskrevet.
Fejlomdirigering
Nรฅr du udfรธrer et program/kommando pรฅ terminalen, er 3 filer altid รฅbne, nemlig standard input, standard output, standard fejl.
Disse filer er altid til stede, nรฅr et program kรธres. Som forklaret fรธr er en filbeskrivelse tilknyttet hver af disse filer.
| File (Felt) | File (Felt) Descriptor |
|---|---|
| Standardindgang STDIN | 0 |
| Standard output STDOUT | 1 |
| Standardfejl STDERR | 2 |
Som standard vises fejlstrรธm pรฅ skรฆrmen. Fejlomdirigering dirigerer fejlene til en anden fil end skรฆrmen.
Hvorfor fejlomdirigering?
Fejlomdirigering er en af โโde meget populรฆre funktioner i Unix / Linux.
Hyppige UNIX-brugere vil regne med, at mange kommandoer giver dig enorme mรฆngder fejl.
- For eksempel, mens man sรธger efter filer, fรฅr man typisk tilladelse nรฆgtet fejl. Disse fejl hjรฆlper normalt ikke den person, der sรธger efter en bestemt fil.
- Mens du udfรธrer shell-scripts, รธnsker du ofte IKKE, at fejlmeddelelser fylder det normale programoutput.
Lรธsningen er at omdirigere fejlmeddelelserne til en fil.
Eksempel 1
$ myprogram 2>errorsfile
Ovenfor udfรธrer vi et program med navnet mit program.
Filbeskrivelsen for standardfejl er 2.
Ved at bruge "2>" omdirigerer vi fejloutputtet til en fil med navnet "errorfile"
Programmets output er sรฅledes ikke fyldt med fejl.
Eksempel 2
Her er et andet eksempel, der bruger find-sรฆtning -
find . -name 'my*' 2>error.log
Ved at bruge "find"-kommandoen sรธger vi efter "." nuvรฆrende mappe for en fil med "navn" der starter med "min"
Eksempel 3: Lad os se et mere komplekst eksempel,
Serveradministratorer lister 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
Her,
- som skriver output fra en fil til input fra en anden fil. 2>&1 betyder, at STDERR omdirigerer til mรฅlet for STDOUT (som er filens dirlist)
- Vi omdirigerer fejloutput til standardoutput, som igen bliver omdirigeret til fil dirlist. Derfor er bรฅde output skrevet til fil dirlist
Resumรฉ
- Hver fil i Linux har en tilsvarende fil Descripteller forbundet med det
- Tastaturet er standardinputenheden, mens din skรฆrm er standardoutputenheden
- ">" er output-omdirigeringsoperatรธren. ">>" tilfรธjer output til en eksisterende fil
- "<" er input-omdirigeringsoperatรธren
- ">&" omdirigerer output fra en fil til en anden.
- Du kan omdirigere fejl ved hjรฆlp af dens tilsvarende fil Descripteller 2.






.png)