Novirzīt stdout un stderr uz failu

Redirect Stdout Stderr File



Pāradresējot jebkuru komandu izvadi uz failu, jūs pamanīsit, ka termināļa logā tiek izdrukāti kļūdu ziņojumi. Jebkura komanda, kas tiek izpildīta jebkurā Linux apvalkā, piemēram, bash, izmanto trīs parastās I/O plūsmas. Katras straumes attēlošanai tiek izmantots ciparu failu deskriptors.

  • Standarta ievades plūsma (stdin): 0
  • Standarta izvades plūsma (stdout): 1
  • Standarta kļūdu plūsma (stderr): 2

Šajā ziņojumā mēs sapratīsim informāciju, kas ietilpst stdout un stderr novirzīšanā uz failu.







Standarta izeja (stdout):

Katrai operētājsistēmai, kuras pamatā ir Linux, ir pārliecība par izpildītās komandas noklusējuma vietu. Ikviens atsaucas uz šo jēdzienu kā stdout vai standarta izvadi, lai padarītu to vieglāku. Jūsu Bash vai Zsh apvalks nepārtraukti meklē noklusējuma izvades vietu. Kad apvalks nosaka jaunu izvadi, tas parāda to termināļa ekrānā, lai jūs to varētu redzēt. Pretējā gadījumā tas nosūtīs izvadi uz noklusējuma atrašanās vietu.



Standarta kļūda (stderr):

Standarta kļūda vai stderr ir līdzīga standarta ieejai un izvadei, taču to izmanto kļūdu ziņojumu glabāšanai. Standarta kļūdu var novirzīt uz komandrindu vai failu, izmantojot termināli. Ja vēlaties ierakstīt vai saglabāt ziņojumus atsevišķā žurnāla failā vai paslēpt kļūdu ziņojumus, novirzīšana stderr jums palīdzēs. Tagad pievērsīsimies stdout un stderr novirzīšanas praktiskajai pusei.



Stdout un stderr novirzīšana uz failu:

Tā kā novirzīšana ir metode, kā uztvert programmas izvadi un nosūtīt to kā ievadi citai komandai vai failam. I/O plūsmas var novirzīt, lietojot operatoru n>, kur n ir faila apraksta numurs. Stdout novirzīšanai mēs izmantojam 1>, bet stderr gadījumā 2> tiek pievienots kā operators.





Mēs esam izveidojuši failu ar nosaukumu sample.txt, lai novirzīto izvadi saglabātu pašreizējā direktorijā.



[Komanda> fails] tiek uzskatīts par klasisko pāradresācijas operatoru, kas tikai novirza standarta izvadi ar terminālī parādīto standarta kļūdu. Mēs parādīsim dažādas iespējas, lai novirzītu arī stderr.

Stderr un stdout novirzīšana uz atsevišķiem failiem:

Zemāk ir komandu sintakse, lai novirzītu stdout un stderr uz atsevišķiem failiem.

komandu >ārā2>kļūda

Tālāk norādītā komanda novirzīs izvadi uz izejas failu un kļūdu ziņojumus uz kļūdas failu.

$kaķisparaugs.txt>ārā2>kļūda

Stderr novirzīšana uz stdout:

Ir ierasta prakse novirzīt stderr ar programmas standarta izvadi, lai visu saglabātu vienā failā. Šeit ir komandu sintakse, lai novirzītu stderr uz stdout:

komandu >ārā2> &1$ls >parauga fails.txt2> &1

$kaķisparauga fails.txt

> out redirects novirza stdout uz samplefile.txt, un 2> & 1 novirzīs stderr uz pašreizējo stdout atrašanās vietu.

Ja stderr vispirms tiek novirzīts uz stdout, izmantojiet tālāk norādīto komandu, lai novirzītu stdout uz failu.

komandu 2> &1 > failu$ls -uz 2> &1 >parauga fails.txt

$kaķisparauga fails.txt

&> tiek izmantota arī tai pašai funkcijai, ko veic 2> & 1.

komandu &> failu$ls &>parauga fails.txt

$kaķisparauga fails.txt

Stdout un stderr novirzīšana uz vienu failu:

Visi apvalki neatbalsta šo veidlapas novirzīšanu, bet bash un Zsh to atbalsta. Stdout un stderr var novirzīt, izmantojot šādu sintaksi.

komandu &>ārā$kaķisparaugs.txt&>ārā

Raksta gaidāmajā sadaļā mēs apskatīsim atsevišķu stdout un stderr novirzīšanas piemēru.

Stdout novirzīšana uz failu:

Standarta izvadi failu deskriptoru numuru sarakstā attēlo ar 1. Lai novirzītu komandu bez faila deskriptora numura, terminālis iestatīja vērtību uz 1. Sintakse stdout novirzīšanai uz failu ir dota šādi:

komandu > failu

Mēs izmantojam paraugu.file komandas ls -al standarta izvades glabāšanai

$ls -uz >paraugs.txt

$kaķisparaugs.txt

komandu 1> failu$ls 1>paraugs.txt

$kaķisparaugs.txt

Stderr novirzīšana uz failu:

Izmantojiet operatoru 2>, lai novirzītu stderr uz failu.

komandu 2> failu $ls -uz 2>paraugs.txt

Mēs varam apvienot izpildi stderr un stdout vienā pāradresācijas komandā.

komandu 2>error.txt1>output.txt

Tālāk sniegtajā piemērā kļūdu ziņojumi tiks saglabāti failā error.txt, kur output.txt standarta komanda būs ls komanda.

$ls 2>error.txt1>output.txt

$kaķisoutput.txt

Secinājums:

Strādājot Linux terminālī, ļoti vērtīga ir I/O plūsmu novirzīšanas koncepcija un failu apraksti. Šajā rakstā mēs esam runājuši par parastajām I/O plūsmām, ieskaitot stdout un stderr. Šī ziņojuma pirmajā sadaļā ir detalizēta informācija par novirzīšanu, I/O plūsmām un skaitlisko failu aprakstu. Tālāk jūs esat redzējis praktisku piemēru dažādām stdout un stderr novirzīšanas formām.