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)