Přesměrovat stdout a stderr do souboru

Redirect Stdout Stderr File



Když přesměrujete jakýkoli výstup příkazu do souboru, všimnete si, že chybové zprávy jsou vytištěny v okně terminálu. Jakýkoli příkaz provedený v jakémkoli prostředí Linux, jako je například bash, využívá tři běžné I/O streamy. Pro reprezentaci každého streamu se používá numerický deskriptor souboru.

  • Standardní vstupní proud (stdin): 0
  • Standardní výstupní proud (standardní výstup): 1
  • Standardní chybový proud (stderr): 2

V tomto příspěvku uchopíme informace, které spadají pod přesměrování stdout a stderr do souboru.







Standardní výstup (standardní výstup):

Každý operační systém založený na Linuxu má přesvědčení o výchozím umístění pro provedený příkaz. Každý tento pojem označuje jako standardní výstup nebo standardní výstup, aby byl zvuk snazší. Váš shell Bash nebo Zsh neustále hledá výchozí umístění výstupu. Když shell detekuje nový výstup, zobrazí ho na obrazovce terminálu, abyste ho mohli vidět. V opačném případě odešle výstup do výchozího umístění.



Standardní chyba (stderr):

Standardní chyba nebo stderr je podobný standardnímu vstupu a výstupu, ale používá se k ukládání chybových zpráv. Standardní chybu lze přesměrovat na příkazový řádek nebo soubor pomocí terminálu. Pokud chcete zaznamenávat nebo ukládat zprávy do samostatného souboru protokolu nebo skrýt chybové zprávy, pomůže vám přesměrování stderr. Pojďme nyní k praktické stránce přesměrování stdout a stderr.



Přesměrování stdout a stderr do souboru:

Přesměrování je metoda zachycení výstupu programu a jeho odeslání jako vstupu do jiného příkazu nebo souboru. I/O toky lze přesměrovat uvedením operátoru n> do provozu, kde n je číslo deskriptoru souboru. Pro přesměrování stdout používáme 1> a pro stderr je 2> přidán jako operátor.





Vytvořili jsme soubor s názvem sample.txt pro uložení přesměrovaného výstupu do našeho aktuálního adresáře.



Soubor (příkaz> soubor) je považován za klasický operátor přesměrování, který přesměruje pouze standardní výstup se standardní chybou zobrazenou v terminálu. Ukážeme také různé možnosti přesměrování stderr.

Přesměrování stderr a stdout na oddělené soubory:

Níže je syntaxe příkazu pro přesměrování stdout a stderr na oddělené soubory.

příkaz >ven2>chyba

Níže uvedený příkaz přesměruje výstup do výstupního souboru a chybové zprávy do chybového souboru.

$kočkasample.txt>ven2>chyba

Přesměrování stderr na standardní výstup:

Běžnou praxí je přesměrovat stderr na standardní výstup programu a uložit vše do jednoho souboru. Zde je syntaxe příkazu pro přesměrování stderr na stdout:

příkaz >ven2> &1$ls >samplefile.txt2> &1

$kočkasamplefile.txt

> out redirects přesměruje stdout na samplefile.txt a 2> & 1 přesměruje stderr na aktuální umístění stdout.

Pokud je stderr přesměrován na stdout jako první, přesměrujte stdout do souboru pomocí níže uvedeného příkazu.

příkaz 2> &1 > soubor$ls -do 2> &1 >samplefile.txt

$kočkasamplefile.txt

&> se také používá pro stejnou funkci, kterou provádí 2> & 1.

příkaz &> soubor$ls &>samplefile.txt

$kočkasamplefile.txt

Přesměrování stdout a stderr do jednoho souboru:

Všechny skořepiny nepodporují toto přesměrování formuláře, ale bash a Zsh jej podporují. Stdout a stderr lze přesměrovat pomocí následující syntaxe.

příkaz &>ven$kočkasample.txt&>ven

V nadcházející části článku se podíváme na samostatný příklad přesměrování stdout a stderr.

Přesměrování stdout do souboru:

Standardní výstup je v seznamu čísel deskriptorů souborů reprezentován číslem 1. Pro příkaz přesměrování bez jakéhokoli čísla deskriptoru souboru nastavil terminál jeho hodnotu na 1. Syntaxe pro přesměrování stdout do souboru je uvedena následovně:

příkaz > soubor

Pro uložení standardního výstupu příkazu ls -al používáme soubor sample.file

$ls -do >sample.txt

$kočkasample.txt

příkaz 1> soubor$ls 1>sample.txt

$kočkasample.txt

Přesměrování stderr do souboru:

K přesměrování stderr do souboru použijte operátor 2>.

příkaz 2> soubor $ls -do 2>sample.txt

Provádění pro stderr a stdout můžeme kombinovat v jednom příkazu přesměrování.

příkaz 2>error.txt1>output.txt

V níže uvedeném příkladu budou chybové zprávy uloženy v souboru error.txt, kde output.txt bude mít svůj standardní výstup příkazu ls.

$ls 2>error.txt1>output.txt

$kočkaoutput.txt

Závěr:

Při práci v terminálu Linux je velmi cenné mít koncept přesměrování a deskriptorů souborů pro I/O toky. V tomto příspěvku jsme hovořili o pravidelných I/O streamech, včetně stdout a stderr. První část tohoto příspěvku vám přináší podrobné informace o přesměrování, I/O proudech a číselném deskriptoru souboru. Dále jste viděli praktický příklad pro různé formy přesměrování stdout a stderr.