Ako presmerovať stderr na štandardný výstup v Bash

How Redirect Stderr Stdout Bash



Príkazy v systéme Linux preberajú určitý vstup od používateľa, ktorým môže byť súbor alebo akýkoľvek atribút, a po spustení poskytujú výstup nazývaný štandardný výstup. Štandardný výstup môže byť úspešný alebo chybový výstup; obe sa zobrazia na obrazovke vášho terminálu. V niektorých prípadoch však chcete uložiť štandardné výstupy do súboru na testovanie alebo ladenie kódu. V systéme Linux môžu byť tieto výstupy presmerované do súboru a proces jeho zachytenia sa nazýva presmerovanie.







Každý proces V systéme Linux vytvára tri dátové toky, stdin, stdout a stderr:



  • stdin : Prijíma informácie od užívateľa prostredníctvom klávesnice
  • stdout : Zobrazí výstup na obrazovke
  • stderr : Zobrazuje informácie o chybe na obrazovke

Každý dátový tok má číselné ID:



Numerické ID názov
0 stdin
1 stdout
2 stderr

Vysvetlíme presmerovanie trochu podrobnejšie:





Ako presmerovať štandardný výstup a štandardnú chybu v Bash:

Na presmerovanie štandardného výstupu príkazu použijeme 1 s operátorom presmerovania, ktorý je väčší ako znamienko>:

$ls 1>stdout.txt

Vyššie uvedený príkaz vytvorí súbor a umiestni štandardný výstup príkazu ls do súboru stdout.txt.



Na prečítanie súboru stdout.txt použite:

$katstdout.txt

Štandardnú chybu môžeme tiež presmerovať do súboru pomocou príkazu:

$katmyfile.txt2>stderr.txt

Na zobrazenie súboru stderr.txt použite:

$katstderr.txt

Uistite sa, že hodnota 2 bude väčšia ako znamienko>. Pretože v adresári nie je žiadny súbor myfile.txt, príkaz cat zadá chybu, ktorá bude pridaná do súboru stderr.txt.

Tieto štandardné výstupy je možné presmerovať aj jediným príkazom, použite:

$ls 1>stdout.txt2>stderr.txt

Výstup príkazu ls bude zapísaný do súboru stdout.txt súbor, ale súbor stderr.txt zostane prázdny, pretože by nedošlo k žiadnej chybe.

Teraz urobíme pre stderr.txt:

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

Na prečítanie súboru stderr.txt použite nižšie uvedený príkaz.

$katstderr.txt

A samozrejme, stdout.txt bude prázdny.

Záver :

Príkaz Linux po spustení poskytuje štandardný výstup, ktorý môže byť úspešným alebo chybovým výstupom. Tieto výstupy nemožno spravidla presmerovať pomocou operátorov presmerovania; musíme použiť konkrétne číselné ID so znamienkom>. V tejto príručke sme sa naučili používať tieto číselné klávesy na presmerovanie štandardného výstupu do súboru s príkladmi.