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:

  1. rezultat naredbe – podatak koji je program dizajniran za proizvodnju, i
  2. 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:

  1. stdin ili 0 – povezan je s tipkovnicom, većina programa čita unos iz ove datoteke.
  2. stdout ili 1 – priložen je ekranu i svi programi šalju svoje rezultate u ovu datoteku i
  3. 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:

  1. -b – omogućuje top pokretanje u skupnom načinu, tako da možete preusmjeriti njegov izlaz u datoteku ili drugu naredbu.
  2. -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:

  1. -l – omogućuje format dugog popisa
  2. -t – sortiraj prema vremenu izmjene s najnovijim datotekama koje se prikazuju prve
  3. -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:

  1. -n 1 – daje upute xargovima da koriste najviše jedan argument po naredbenom retku i pošalju cp naredbi
  2. cp – kopira datoteku
  3. -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.