Naučite osnove kako funkcionira preusmjeravanje I/O (ulaz/izlaz) Linuxa
Jedna od najvažnijih i najzanimljivijih tema pod Linux administracijom je I/O preusmjeravanje. Ova značajka naredbenog retka omogućuje vam preusmjeravanje ulaza i/ili izlaza naredbi iz i/ili u datoteke, ili spajanje više naredbi zajedno pomoću vodova kako biste formirali ono što je poznato kao “cevovod naredbi” .
Sve naredbe koje izvodimo u osnovi proizvode dvije vrste izlaza:
- rezultat naredbe – podatak koji je program dizajniran za proizvodnju, i
- status programa i poruke o pogreškama koje informiraju korisnika o detaljima izvršenja programa.
U Linuxu i drugim sustavima sličnim Unixu, postoje tri zadane datoteke imenovane u nastavku koje također identificira ljuska pomoću brojeva deskriptora datoteke:
- stdin ili 0 – povezan je s tipkovnicom, većina programa čita unos iz ove datoteke.
- stdout ili 1 – priložen je ekranu i svi programi šalju svoje rezultate u ovu datoteku i
- stderr ili 2 – programi šalju poruke o statusu/pogrešci ovoj datoteci koja je također priložena ekranu.
Stoga vam I/O preusmjeravanje omogućuje promjenu izvora unosa naredbe, kao i kamo se šalju njezin izlaz i poruke o pogrešci. A to je omogućeno operatorima preusmjeravanja “< ”
i “> ”
.
Kako preusmjeriti standardni izlaz u datoteku u Linuxu
Možete preusmjeriti standardni izlaz kao u primjeru ispod, ovdje želimo pohraniti izlaz gornje naredbe za kasniju inspekciju:
top -bn 5 >top.log
Gdje su zastave:
-b
– omogućuje top pokretanje u skupnom načinu, tako da možete preusmjeriti njegov izlaz u datoteku ili drugu naredbu.-n
– određuje broj ponavljanja prije završetka naredbe.
Sadržaj datoteke top.log
možete pogledati koristeći naredbu cat na sljedeći način:
cat top.log
Za dodavanje izlaza naredbe upotrijebite operator “>> ”
.
Na primjer, da biste dodali izlaz gornje naredbe u datoteku top.log posebno unutar skripte (ili u naredbenom retku), unesite redak ispod:
top -bn 5 >>top.log
Napomena: Koristeći broj deskriptora datoteke, gornja naredba za preusmjeravanje izlaza ista je kao:
top -bn 5 1>top.log
Kako preusmjeriti standardnu pogrešku u datoteku u Linuxu
Za preusmjeravanje standardne pogreške naredbe, trebate eksplicitno navesti broj deskriptora datoteke, 2
kako bi ljuska razumjela što pokušavate učiniti.
Na primjer, naredba ls u nastavku proizvest će pogrešku kada je izvrši običan korisnik sustava bez root privilegija:
ls -l /root/
Možete preusmjeriti standardnu pogrešku u datoteku kao u nastavku:
ls -l /root/ 2>ls-error.log
cat ls-error.log
Kako biste dodali standardnu pogrešku, koristite naredbu ispod:
ls -l /root/ 2>>ls-error.log
Kako preusmjeriti standardni izlaz/pogrešku u jednu datoteku
Također je moguće uhvatiti sav izlaz naredbe (i standardni izlaz i standardnu pogrešku) u jednu datoteku. To se može učiniti na dva moguća načina navođenjem brojeva deskriptora datoteke:
1. Prva je relativno stara metoda koja funkcionira na sljedeći način:
ls -l /root/ >ls-error.log 2>&1
Gornja naredba znači da će ljuska prvo poslati izlaz naredbe ls u datoteku ls-error.log (koristeći >ls-error.log
), a zatim zapisati sve poruke o pogreškama u deskriptor datoteke 2 (standardni izlaz) koji je preusmjeren u datoteku ls-error.log (koristeći 2>&1
). Podrazumijeva da se standardna pogreška također šalje u istu datoteku kao standardni izlaz.
2. Druga i izravna metoda je:
ls -l /root/ &>ls-error.log
Također možete dodati standardni izlaz i standardnu pogrešku u jednu datoteku ovako:
ls -l /root/ &>>ls-error.log
Kako preusmjeriti standardni unos u datoteku
Većina, ako ne i sve naredbe dobivaju svoj unos iz standardnog unosa, a prema zadanim postavkama standardni unos je priključen na tipkovnicu.
Za preusmjeravanje standardnog unosa iz datoteke koja nije tipkovnica, upotrijebite operator “< ”
kao u nastavku:
cat <domains.list
Kako preusmjeriti standardni ulaz/izlaz u datoteku
Možete izvršiti standardno preusmjeravanje ulaza i standardnog izlaza u isto vrijeme pomoću naredbe sortiranja kao što je prikazano u nastavku:
sort <domains.list >sort.output
Kako koristiti I/O preusmjeravanje pomoću cijevi
Za preusmjeravanje izlaza jedne naredbe kao ulaza druge, možete koristiti cijevi, ovo je moćno sredstvo za izgradnju korisnih redaka naredbi za složene operacije.
Na primjer, donja naredba izlistat će prvih pet nedavno izmijenjenih datoteka.
ls -lt | head -n 5
Evo, opcije:
-l
– omogućuje format dugog popisa-t
– sortiraj prema vremenu izmjene s najnovijim datotekama koje se prikazuju prve-n
– određuje broj redaka zaglavlja za prikaz
Važne naredbe za izgradnju cjevovoda
Ovdje ćemo ukratko pregledati dvije važne naredbe za izgradnju cjevovoda naredbi, a to su:
xargs koji se koristi za izradu i izvršavanje redaka naredbi iz standardnog unosa. Dolje je primjer cjevovoda koji koristi xargs, ova se naredba koristi za kopiranje datoteke u više direktorija u Linuxu:
echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh
I opcije:
-n 1
– daje upute xargovima da koriste najviše jedan argument po naredbenom retku i pošalju cp naredbicp
– kopira datoteku-v
– prikazuje napredak naredbe kopiranja.
Za više mogućnosti korištenja i informacija, pročitajte xargs stranicu priručnika:
man xargs
Naredba tee čita sa standardnog ulaza i piše na standardni izlaz i datoteke. Možemo demonstrirati kako tee radi na sljedeći način:
echo "Testing how tee command works" | tee file1
Datotečni ili tekstualni filtri obično se koriste s cijevima za učinkovite operacije Linux datoteka, za obradu informacija na moćne načine kao što je restrukturiranje izlaza naredbi (ovo može biti vitalno za generiranje korisnih Linux izvješća), mijenjanje teksta u datotekama i nekoliko drugih administracija Linux sustava zadaci.
Kako biste saznali više o Linux filtrima i cijevima, pročitajte ovaj članak Pronađi 10 najpopularnijih IP adresa koje pristupaju Apache poslužitelju, pokazuje koristan primjer korištenja filtara i cijevi.
U ovom smo članku objasnili osnove I/O preusmjeravanja u Linuxu. Ne zaboravite podijeliti svoje misli putem odjeljka za povratne informacije u nastavku.