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.

Output omdirigering

Eksempel:

ls -al > listings

Her bliver outputtet af kommandoen ls -al omdirigeret til fil "lister" i stedet for din skærm.

Output omdirigering

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.

Output omdirigering

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

Input 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

Input omdirigering

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.

Fejlomdirigering

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

Hvorfor fejlomdirigering

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"

Hvorfor fejlomdirigering

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

Hvorfor fejlomdirigering

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.