Przekierowywanie komunikatów o błędach z wiersza polecenia: STDERR/STDOUT


Streszczenie


Gdy przekierowanie danych wyjściowych z aplikacji za pomocą ">" symbol, komunikaty o błędach wydrukować nadal na ekranie. To dlatego komunikaty o błędach często są wysyłane do strumienia błąd standardowy zamiast strumienia standardowy limit.


Dane wyjściowe z aplikacji konsoli (z wiersza polecenia) lub polecenia często jest wysyłana do dwóch oddzielnych strumieni. Regularne dane wyjściowe są wysyłane do standardowych się (STDOUT) i komunikaty o błędach są wysyłane do błędu standardowego (STDERR). Kiedy przekierować wyjścia przy użyciu konsoli ">" symbol, są tylko przekierowywanie STDOUT. Aby przekierować STDERR należy określić "2 >" dla symbolu przekierowania. Spowoduje to wybranie drugiego strumienia wyjściowego, który jest STDERR.

PRZYKŁAD

Polecenie "dir file.xxx" (gdzie file.xxx nie istnieje) zostaną wyświetlone następujące dane wyjściowe:
Wolumin w stacji F jest numer seryjny woluminu krystalicznego trzciny cukrowej jest 34EC 0876


Nie można odnaleźć pliku
Jeśli przekierować dane wyjściowe do urządzenia NUL za pomocą "dir file.xxx > nul", nadal pojawi się komunikat o błędzie:
Nie można odnaleźć pliku
Aby przekierować komunikat o błędzie do portu NUL, należy użyć następującego polecenia:
   dir file.xxx 2> nul
Lub można przekierować dane wyjściowe do jednym miejscu, a błędy do innego.
   dir file.xxx > output.msg 2> output.err
Błędy i wyjścia standardowego do jednego pliku można drukować za pomocą polecenia "& 1", aby przekierować dane wyjściowe do obiektu STDERR stdout, a następnie wysłać dane wyjściowe z STDOUT do pliku:

   dir file.xxx 1> output.msg 2>&1