Input Output Redirection i Linux/Unix-eksempler

Hva er omdirigering?

Omdirigering er en funksjon i Linux slik at nรฅr du utfรธrer en kommando, kan du endre standard input/output-enheter. Den grunnleggende arbeidsflyten til evt Linux kommando er at det tar en inngang og gir en utgang.

  • Standardinngangsenheten (stdin) er tastaturet.
  • Standard utgangsenhet (stdout) er skjermen.

Med omdirigering kan ovennevnte standard input/output endres.

Klikk her. hvis videoen ikke er tilgjengelig

Omdirigering av utdata

Ocuco '>'-symbolet brukes for utdata (STDOUT) omdirigering.

Omdirigering av utdata

Eksempel:

ls -al > listings

Her blir utdataene fra kommandoen ls -al omdirigert til filen "lister" i stedet for skjermen.

Omdirigering av utdata

Merknader: Bruk riktig filnavn mens du omdirigerer kommandoutdata til en fil. Hvis det er en eksisterende fil med samme navn, vil den omdirigerte kommandoen slette innholdet i den filen og deretter kan den bli overskrevet."

Hvis du ikke vil at en fil skal overskrives, men รธnsker รฅ legge til mer innhold i en eksisterende fil, bรธr du bruke '>>' operatรธr.

Omdirigering av utdata

Du kan omdirigere standardutdata, til ikke bare filer, men ogsรฅ enheter!

$ cat music.mp3 > /dev/audio

Cat-kommandoen leser filen music.mp3 og sender utdataene til /dev/audio som er lydenheten. Hvis lydkonfigurasjonene i PC-en din er riktige, vil denne kommandoen spille av filen music.mp3

Input omdirigering

Ocuco ''-symbolet brukes for input(STDIN) omdirigering

Input omdirigering

Eksempel: E-postprogrammet i Linux kan hjelpe deg med รฅ sende e-post fra terminalen.

Du kan skrive inn innholdet i e-posten ved รฅ bruke standard enhetstastatur. Men hvis du vil legge ved en fil til e-post, kan du bruke omdirigeringsoperatรธren for input i fรธlgende format.

Mail -s "Subject" to-address < Filename

Input omdirigering

Dette vil legge ved filen med e-posten, og den vil bli sendt til mottakeren.

Eksemplene ovenfor var enkle. La oss se pรฅ noen avanserte omdirigeringsteknikker som bruker File Descripteller.

filet Descriptors (FD)

I Linux/Unix er alt en fil. Vanlige filer, kataloger og til og med enheter er filer. Hver fil har et tilknyttet nummer kalt fil Descripteller (FD).

Skjermen din har ogsรฅ en fil Descripteller. Nรฅr et program kjรธres, sendes utdata til fil Descripteller pรฅ skjermen, og du ser programutgang pรฅ skjermen. Hvis utdata sendes til fil Descripteller av skriveren, ville programmets utdata ha blitt skrevet ut.

Feil omdirigering

Hver gang du utfรธrer et program/kommando pรฅ terminalen, er alltid 3 filer รฅpne, nemlig standard input, standard output, standard error.

Feil omdirigering

Disse filene er alltid til stede nรฅr et program kjรธres. Som forklart fรธr 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รธm pรฅ skjermen. Feilomadressering dirigerer feilene til en annen fil enn skjermen.

Hvorfor feilomadressering?

Omdirigering av feil er en av de svรฆrt populรฆre funksjonene til Unix / Linux.

Hyppige UNIX-brukere vil regne med at mange kommandoer gir deg enorme mengder feil.

  • For eksempel, mens du sรธker etter filer, fรฅr man vanligvis feil med tillatelse nektet. Disse feilene hjelper vanligvis ikke personen som sรธker etter en bestemt fil.
  • Mens du utfรธrer shell-skript, vil du ofte IKKE at feilmeldinger skal rote opp den normale programutgangen.

Lรธsningen er รฅ omdirigere feilmeldingene til en fil.

Eksempel 1

$ myprogram 2>errorsfile

Hvorfor feilomdirigering

Ovenfor kjรธrer vi et program som heter myprogram.

Filbeskrivelsen for standardfeil er 2.

Ved รฅ bruke "2>" omdirigerer vi feilutgangen til en fil som heter "errorfile"

Dermed er ikke programutdata full av feil.

Eksempel 2

Her er et annet eksempel som bruker finne-setningen -

find . -name 'my*' 2>error.log

Ved รฅ bruke "finn"-kommandoen sรธker vi etter "." gjeldende katalog for en fil med "navn" som begynner med "min"

Hvorfor feilomdirigering

Eksempel 3: La oss se et mer komplekst eksempel,

Serveradministratorer viser ofte kataloger og lagrer bรฅde feil og standardutdata i en fil, som kan behandles senere. Her er kommandoen.

ls Documents ABC> dirlist 2>&1

Her

  • som skriver utdata fra en fil til inngangen til en annen fil. 2>&1 betyr at STDERR omdirigerer til mรฅlet for STDOUT (som er fildirlisten)
  • Vi omdirigerer feilutdata til standardutdata som igjen blir omdirigert til fildirliste. Derfor skrives bรฅde utdataene til filen dirlist

Hvorfor feilomdirigering

Sammendrag

  • Hver fil i Linux har en tilsvarende fil Descripteller assosiert med det
  • Tastaturet er standard inndataenhet mens skjermen er standard utdataenhet
  • ">" er utdataomdirigeringsoperatรธren. ">>" legger utdata til en eksisterende fil
  • ยซ<ยป er omdirigeringsoperatรธren for input
  • ">&" omdirigerer utdata fra en fil til en annen.
  • Du kan omdirigere feil ved รฅ bruke den tilsvarende filen Descripteller 2.

Oppsummer dette innlegget med: