GNU/Linux >> Znalost Linux >  >> Linux

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

Všechny operační systémy POSIX mají 3 proudy:stdin, stdout a stderr. stdin je vstup, který může přijmout stdout nebo stderr. stdout je primární výstup, který je přesměrován pomocí > , >> nebo | . stderr je chybový výstup, který je zpracováván samostatně, takže žádné výjimky nejsou předány příkazu nebo zapsány do souboru, který by mohl narušit; normálně se to posílá do nějakého logu nebo přímo vyhazuje, i když je stdout přesměrován. Pro přesměrování obou na stejné místo použijte:

$command &> /some/file

UPRAVIT :děkuji Zackovi za upozornění, že výše uvedené řešení není přenosné – místo toho použijte:

$command > file 2>&1 

Pokud chcete chybu umlčet, postupujte takto:

$command 2> /dev/null

Tato část je zapsána do stderr, použijte 2> jej přesměrovat. Například:

foo > stdout.txt 2> stderr.txt

nebo chcete-li ve stejném souboru:

foo > allout.txt 2>&1

Poznámka:toto funguje v (ba)sh, zkontrolujte, zda váš shell má správnou syntaxi


Linux
  1. Ekvivalentní soubor „.bashrc“ čtený všemi shelly?

  2. Jak přesměrovat výstup programu do souboru ZIP?

  3. Příkaz pro výstup obsahu souboru do Stdout?

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

  2. Jak přesměrovat výstup do souboru a stdout

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

  1. Jak přesměrovat výstup system() do souboru?

  2. Jak přesměrovat výstup služby systemd do souboru

  3. bash:přesměrování stderr do souboru a stdout + stderr na obrazovku