Jak přesměrovat stderr na standardní výstup v Bash

How Redirect Stderr Stdout Bash



Příkazy v Linuxu přebírají určitý vstup od uživatele, což může být soubor nebo jakýkoli atribut, a po spuštění dávají výstup nazývaný standardní výstup. Standardní výstup může být úspěšný výstup nebo chybový výstup; obojí se zobrazí na obrazovce vašeho terminálu. Ale v některých případech chcete uložit standardní výstupy do souboru pro testování nebo ladění kódu. V Linuxu lze tyto výstupy přesměrovat do souboru a proces jeho zachycení se nazývá přesměrování.







Každý proces V Linuxu vytváří tři datové toky, stdin, stdout a stderr:



  • stdin : Přijímá vstup od uživatele prostřednictvím klávesnice
  • standardní výstup : Zobrazí výstup na obrazovce
  • stderr : Zobrazuje informace o chybě na obrazovce

Každý datový proud má číselné ID:



Numerické číslo název
0 stdin
1 standardní výstup
2 stderr

Pojďme si přesměrování vysvětlit trochu podrobněji:





Jak přesměrovat standardní výstup a standardní chybu v Bash:

K přesměrování standardního výstupu příkazu použijeme 1 s operátorem přesměrování, který je větší než znaménko>:

$ls 1>stdout.txt

Výše uvedený příkaz vytvoří soubor a umístí standardní výstup příkazu ls do souboru stdout.txt.



K přečtení souboru stdout.txt použijte:

$kočkastdout.txt

Standardní chybu můžeme přesměrovat také do souboru pomocí příkazu:

$kočkamyfile.txt2>stderr.txt

Chcete -li zobrazit soubor stderr.txt, použijte:

$kočkastderr.txt

Ujistěte se, že použití 2 bude větší než znaménko>. Protože v adresáři není žádný soubor myfile.txt, příkaz cat způsobí chybu, která bude připojena v souboru stderr.txt.

Tyto standardní výstupy lze přesměrovat také jediným příkazem, použijte:

$ls 1>stdout.txt2>stderr.txt

Výstup příkazu ls bude zapsán do souboru stdout.txt soubor, ale stderr.txt zůstane prázdné, protože by nedošlo k žádné chybě.

Nyní pojďme udělat pro stderr.txt:

$kočkamyfile.txt1>stdout.txt2>stderr.txt

Ke čtení souboru stderr.txt použijte níže uvedený příkaz.

$kočkastderr.txt

A samozřejmě bude stdout.txt prázdný.

Závěr :

Příkaz Linux po spuštění poskytuje standardní výstup, který může být úspěšný nebo chybový. Tyto výstupy obecně nelze přesměrovat pomocí operátorů přesměrování; potřebujeme použít konkrétní číselná ID se znaménkem>. V této příručce jsme se naučili, jak pomocí těchto numerických kláves přesměrovat standardní výstup do souboru s příklady.