En av de viktigste og interessante emner under Linux -administrasjon er I/O -omdirigering. Denne funksjonen på kommandolinjen lar deg omdirigere inngang og/eller utgang av kommandoer fra og/eller til filer, eller koble flere kommandoer sammen ved hjelp av rør for å danne det som kalles en "kommandopipeline”.
Alle kommandoene vi kjører produserer i utgangspunktet to typer utdata:
I Linux og andre Unix-lignende systemer er det tre standardfiler navngitt nedenfor som også identifiseres av skallet ved hjelp av filbeskrivelsesnumre:
Derfor lar I/O -omdirigering deg endre inngangskilden til en kommando, samt hvor utdata og feilmeldinger sendes til. Og dette er muliggjort av
“ og “>”
omdirigeringsoperatører.
Du kan omdirigere standardutgang som i eksemplet nedenfor, her vil vi lagre utdataene fra øverste kommando for senere inspeksjon:
$ top -bn 5> top.log.
Hvor flaggene:
-b
- muliggjør topp å kjøre i batchmodus, slik at du kan omdirigere utdataene til en fil eller en annen kommando.-n
- angir antall iterasjoner før kommandoen avsluttes.Du kan se innholdet i top.log
filen ved hjelp av kattkommando som følger:
$ cat top.log.
For å legge til utdataene fra en kommando, bruk “>>”
operatør.
For eksempel for å legge til utdataene fra øverste kommando ovenfor i top.log filen spesielt i et skript (eller på kommandolinjen), skriv inn linjen nedenfor:
$ top -bn 5 >> top.log.
Merk: Ved hjelp av filbeskrivelsesnummeret er kommandoen for omdirigering av output den samme som:
$ top -bn 5 1> top.log.
For å omdirigere standardfeil for en kommando, må du eksplisitt spesifisere filbeskrivelsesnummeret, 2
for at skallet skal forstå hva du prøver å gjøre.
For eksempel ls kommando nedenfor vil det oppstå en feil når den utføres av en normal systembruker uten rotrettigheter:
$ ls -l /root /
Du kan omdirigere standardfeilen til en fil som nedenfor:
$ ls -l / root / 2> ls -error.log. $ cat ls-error.log
For å legge til standardfeilen, bruk kommandoen nedenfor:
$ ls -l / root / 2 >> ls -error.log.
Det er også mulig å fange all utdata fra en kommando (både standardutgang og standardfeil) til en enkelt fil. Dette kan gjøres på to mulige måter ved å spesifisere filbeskrivelsesnumrene:
1. Den første er en relativt gammel metode som fungerer som følger:
$ ls -l / root /> ls -error.log 2> & 1.
Kommandoen ovenfor betyr at skallet først sender utdataene fra ls kommando til filen ls-error.log (ved hjelp av > ls-error.log
), og skriver deretter alle feilmeldingene til filbeskrivelsen 2 (standardutgang) som er blitt omdirigert til filen ls-error.log (ved hjelp av 2>&1
). Under antagelse av at standardfeil også blir sendt til samme fil som standardutgang.
2. Den andre og direkte metoden er:
$ ls -l / root / &> ls -error.log.
Du kan også legge til standardutdata og standardfeil i en enkelt fil slik:
$ ls -l / root / & >> ls -error.log.
De fleste om ikke alle kommandoene får input fra standard inngang, og som standard er standard inngang festet til tastaturet.
Hvis du vil omdirigere standardinndata fra en annen fil enn tastaturet, bruker du “ operatør som nedenfor:
$ kattSlik omdirigerer du standard inngang/utgang til fil
Du kan utføre standard input, standard output omdirigering samtidig med sorter kommando som Nedenfor:
$ sortersort.output. Hvordan bruke I/O -omdirigering ved hjelp av rør
For å omdirigere utdataene fra en kommando som inndata fra en annen, kan du bruke rør, dette er et kraftig middel for å bygge nyttige kommandolinjer for komplekse operasjoner.
For eksempel vil kommandoen nedenfor liste de fem beste nylig modifiserte filene.
$ ls -lt | hode -n 5Her er alternativene:
-l
- muliggjør langt oppføringsformat-t
– sorter etter endringstid med de nyeste filene vises først-n
- angir antall overskriftslinjer som skal visesViktige kommandoer for bygging av rørledninger
Her vil vi kort gjennomgå to viktige kommandoer for å bygge kommandorørledninger, og de er:
xargs som brukes til å bygge og utføre kommandolinjer fra standard inngang. Nedenfor er et eksempel på en rørledning som bruker xargs, er denne kommandoen vant til kopiere en fil til flere kataloger i Linux:
$ echo/home/aaronkilik/test//home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh.Og alternativene:
-n 1
- instruerer xargs om å bruke maksimalt ett argument per kommandolinje og sende til cp -kommandocp
- kopierer filen-v
– viser fremdriften for kopieringskommandoen.For flere bruksalternativer og informasjon, les gjennom xargs mannsside:
$ man xargsEN tee kommandoen leser fra standard input og skriver til standard output og filer. Vi kan demonstrere hvordan tee fungerer som følger:
$ echo "Testing hvordan tee -kommando fungerer" | tee -fil 1Fil- eller tekstfiltre brukes ofte med rør for effektive Linux -filoperasjoner, for å behandle informasjon på kraftige måter, for eksempel omstrukturering av kommandoer (dette kan være avgjørende for generasjon av nyttige Linux -rapporter), endre tekst i filer pluss flere andre Linux systemadministrasjonsoppgaver.
For å lære mer om Linux -filtre og rør, les denne artikkelen Finn de 10 beste IP -adressene som får tilgang til Apache -serveren, viser et nyttig eksempel på bruk av filtre og rør.
I denne artikkelen forklarte vi grunnleggende om I/O -omdirigering i Linux. Husk å dele tankene dine via tilbakemeldingsdelen nedenfor.