Jak przekierować stderr na standardowe wyjście w Bash

How Redirect Stderr Stdout Bash



Polecenia w Linuksie pobierają dane wejściowe od użytkownika, które mogą być plikiem lub dowolnym atrybutem, a po wykonaniu dają pewne dane wyjściowe zwane standardowym wyjściem. Standardowe wyjście może być wyjściem sukcesu lub wyjściem błędu; oba będą wyświetlane na ekranie terminala. Ale w niektórych przypadkach chcesz przechowywać standardowe wyjścia w pliku do testowania lub debugowania kodu. W Linuksie te dane wyjściowe można przekierować do pliku, a proces jego przechwytywania nazywany jest przekierowaniem.







Każdy proces w Linuksie wytwarza trzy strumienie danych, stdin, stdout i stderr:



  • stdin : Pobiera dane wejściowe od użytkownika za pomocą klawiatury
  • stdout : Wyświetla dane wyjściowe na ekranie
  • stderr : Wyświetla informacje o błędzie na ekranie

Każdy strumień danych ma identyfikator liczbowy:



Numeryczny identyfikator Nazwa
0 stdin
1 stdout
2 stderr

Wyjaśnijmy przekierowanie nieco bardziej szczegółowo:





Jak przekierować standardowe wyjście i błąd standardowy w Bash:

Aby przekierować standardowe wyjście polecenia, użyjemy 1 z operatorem przekierowania, który jest większy niż znak >:

$ls 1>stdout.txt

Powyższe polecenie utworzy plik i umieści standardowe wyjście polecenia ls w pliku stdout.txt.



Aby odczytać plik stdout.txt, użyj:

$Kotstdout.txt

Możemy również przekierować błąd standardowy do pliku za pomocą polecenia:

$Kotmojplik.txt2>stderr.txt

Aby wyświetlić plik stderr.txt, użyj:

$Kotstderr.txt

Upewnij się, że użycie 2 będzie większe niż znak >. Ponieważ w katalogu nie ma pliku myfile.txt, polecenie cat zwróci błąd, który zostanie dołączony do pliku stderr.txt.

Te standardowe wyjścia można również przekierować za pomocą jednego polecenia, użyj:

$ls 1>stdout.txt2>stderr.txt

Dane wyjściowe polecenia ls zostaną zapisane w stdout.txt plik, ale stderr.txt pozostanie pusty, ponieważ nie będzie błędu.

Teraz zróbmy dla stderr.txt:

$Kotmojplik.txt1>stdout.txt2>stderr.txt

Użyj poniższego polecenia, aby odczytać stderr.txt.

$Kotstderr.txt

I oczywiście stdout.txt będzie pusty.

Wniosek :

Polecenie Linuksa po wykonaniu daje standardowe wyjście, które może być wyjściem sukcesu lub wyjściem błędu. Ogólnie rzecz biorąc, te dane wyjściowe nie mogą być przekierowane za pomocą operatorów przekierowania; musimy użyć określonych identyfikatorów numerycznych ze znakiem >. W tym przewodniku dowiedzieliśmy się, jak używać tych klawiszy numerycznych do przekierowywania standardowego wyjścia do pliku z przykładami.