GNU/Linux >> Znalost Linux >  >> Linux

Jak přesměrovat stderr a stdout na různé soubory ve stejném řádku ve skriptu?

Asi takhle:

$ command >>output 2>>error

Stačí je přidat na jeden řádek command 2>> error 1>> output

Pamatujte však, že >> slouží k připojení, pokud soubor již obsahuje data. Zatímco > přepíše všechna existující data v souboru.

Takže command 2> error 1> output pokud nechcete připojit.

Jen pro doplnění můžete napsat 1> jako právě > protože výchozí deskriptor souboru je výstup. takže 1> a > je to samé.

Takže command 2> error 1> output se změní na command 2> error > output


Zkuste toto:

your_command 2>stderr.log 1>stdout.log

Další informace

Číslice 09 jsou deskriptory souborů v bash.0 znamená standardní vstup, 1 znamená standardní výstup, 2 znamená standardní chybu. 39 jsou náhradní pro jakékoli jiné dočasné použití.

Libovolný deskriptor souboru lze přesměrovat do souboru nebo na jiný deskriptor souboru pomocí operátoru > . Místo toho můžete použít operátor >> k připojí k souboru namísto vytvoření prázdného.

Použití:

file_descriptor > filename

file_descriptor > &file_descriptor

Viz Advanced Bash-Scripting Guide:Kapitola 20. Přesměrování I/O.


Nebo pokud chcete smíchat výstupy (stdout &stderr) do jednoho jediného souboru, můžete použít:

command > merged-output.txt 2>&1

Linux
  1. Jak rozdělit a kombinovat soubory z příkazového řádku v Linuxu

  2. Způsob, jak přesměrovat výstup programu, a přesto jej přejít na Stdout?

  3. Jak přesměrovat Stderr a Stdout na různé soubory a také zobrazit v terminálu?

  1. Přesměrování a výstup potrubí?

  2. Jak tisknout víceřádkový výstup na stejném řádku?

  3. Přesměrujte veškerý výstup do souboru v Bash

  1. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  2. Jak zachytit terminálové relace a výstup pomocí příkazu skriptu Linux

  3. Linux:Jak použít soubor jako vstup a výstup zároveň?