Kā novirzīt stderr uz stdout Bash

How Redirect Stderr Stdout Bash



Komandas operētājsistēmā Linux no lietotāja ņem zināmu ieguldījumu, kas var būt fails vai jebkurš atribūts, un pēc izpildes tās dod zināmu izvadi, ko sauc par standarta izvadi. Standarta izvade var būt veiksmīga izeja vai kļūdas izvade; abi tiks parādīti jūsu termināļa ekrānā. Bet dažos gadījumos standarta izvadi vēlaties saglabāt failā, lai pārbaudītu vai atkļūdotu kodu. Linuxā šīs izejas var novirzīt uz failu, un tā uztveršanas procesu sauc par novirzīšanu.







Katrs Linux process rada trīs datu plūsmas, stdin, stdout un stderr:



  • stdin : Ievada lietotāja ievadi, izmantojot tastatūru
  • stdout : Ekrānā parāda izvadi
  • stderr : Parāda ekrānā informāciju par kļūdām

Katrai datu straumei ir ciparu ID:



Skaitliskais ID Vārds
0 stdin
1 stdout
2 stderr

Nedaudz sīkāk paskaidrosim novirzīšanu:





Kā novirzīt standarta izvadi un standarta kļūdu Bash:

Lai novirzītu komandas standarta izvadi, mēs izmantosim 1 ar novirzīšanas operatoru, kas ir lielāks par> zīmi:

$ls 1>stdout.txt

Iepriekš minētā komanda izveidos failu un ievietos komandas ls standarta izvadi failā stdout.txt.



Lai lasītu failu stdout.txt, izmantojiet:

$kaķisstdout.txt

Mēs varam arī novirzīt standarta kļūdu uz failu, izmantojot komandu:

$kaķismyfile.txt2>stderr.txt

Lai skatītu failu stderr.txt, izmantojiet:

$kaķisstderr.txt

Pārliecinieties, vai 2. lietošana ir lielāka par> zīmi. Tā kā direktorijā nav faila myfile.txt, komanda cat dos kļūdu, kas tiks pievienota failam stderr.txt.

Šīs standarta izejas var arī novirzīt ar vienu komandu, izmantojiet:

$ls 1>stdout.txt2>stderr.txt

Komandas ls izvade tiks ierakstīta stdout.txt failu, bet stderr.txt paliks tukšs, jo nebūtu kļūdu.

Tagad darīsim failu stderr.txt:

$kaķismyfile.txt1>stdout.txt2>stderr.txt

Izmantojiet zemāk minēto komandu, lai lasītu failu stderr.txt.

$kaķisstderr.txt

Un, protams, stdout.txt būs tukšs.

Secinājums :

Izpildot, Linux komanda dod standarta izvadi, kas varētu būt veiksmīga vai kļūda. Parasti šos izvadus nevar novirzīt, izmantojot novirzīšanas operatorus; mums ir jāizmanto konkrēti ciparu ID ar zīmi>. Šajā rokasgrāmatā mēs uzzinājām, kā izmantot šos ciparu taustiņus, lai novirzītu standarta izvadi uz failu ar piemēriem.