Paano Mag-redirect ng stderr upang mag-stdout sa Bash

How Redirect Stderr Stdout Bash



Ang mga utos sa Linux ay kumukuha ng ilang input mula sa gumagamit, na maaaring isang file o anumang katangian, at sa pagpapatupad, nagbibigay sila ng ilang output na tinatawag na karaniwang output. Ang karaniwang output ay maaaring isang output ng tagumpay o isang output ng error; kapwa ipapakita sa iyong terminal screen. Ngunit sa ilang mga kaso, nais mong iimbak ang mga karaniwang output sa isang file para sa pagsubok o pag-debug ng code. Sa Linux, ang mga output na ito ay maaaring mai-redirect sa isang file, at ang proseso ng pagkuha nito na tinatawag na pag-redirect.







Ang bawat proseso sa Linux ay gumagawa ng tatlong data stream, stdin, stdout, at stderr:



  • si stdin : Kumukuha ng input mula sa gumagamit sa pamamagitan ng keyboard
  • stdout : Ipinapakita ang output sa screen
  • stderr : Nagpapakita ng impormasyon ng error sa screen

Ang bawat data stream ay may numerong id:



Numero ng Id Pangalan
0 si stdin
1 stdout
2 stderr

Ipaliwanag natin ang pag-redirect ng kaunti pa sa detalye:





Paano i-redirect ang Karaniwang output at Karaniwang error sa Bash:

Upang mai-redirect ang karaniwang output ng utos, gagamitin namin ang 1 sa isang operator ng pag-redirect na mas malaki sa> sign:

$ls 1>stdout.txt

Ang utos sa itaas ay lilikha ng isang file at ilalagay ang karaniwang output ng ls command sa stdout.txt file.



Upang mabasa ang file ng stdout.txt, gamitin ang:

$pusastdout.txt

Maaari naming i-redirect ang karaniwang error sa isang file din sa pamamagitan ng paggamit ng utos:

$pusamyfile.txt2>stderr.txt

Upang matingnan ang stderr.txt file, gamitin ang:

$pusastderr.txt

Tiyaking ang paggamit ng 2 ay mas malaki kaysa sa> sign. Dahil walang myfile.txt file sa direktoryo, ang utos ng pusa ay magbibigay ng isang error na idadagdag sa stderr.txt file.

Ang mga karaniwang output na ito ay maaaring mai-redirect sa isang solong utos din, gamitin ang:

$ls 1>stdout.txt2>stderr.txt

Ang output ng utos ng ls ay isusulat sa stdout.txt file, ngunit ang stderr.txt mananatiling walang laman dahil walang magiging error.

Ngayon gawin natin para sa stderr.txt:

$pusamyfile.txt1>stdout.txt2>stderr.txt

Gamitin ang nabanggit na utos na basahin ang stderr.txt.

$pusastderr.txt

At syempre, walang laman ang stdout.txt.

Konklusyon :

Ang utos ng Linux sa pagpapatupad ay nagbibigay ng karaniwang output na maaaring isang output ng tagumpay o isang output ng error. Pangkalahatan, ang mga output na ito ay hindi maaaring i-redirect gamit ang mga operator ng pag-redirect; kailangan naming gumamit ng tiyak na mga numerong id na may> sign. Sa gabay na ito, natutunan namin kung paano gamitin ang mga numerong key na ito upang mai-redirect ang karaniwang output sa isang file na may mga halimbawa.