Przekieruj stdout i stderr do pliku

Przekieruj stdout i stderr do pliku

Po przekierowaniu dowolnego wyjścia polecenia do pliku zauważysz, że komunikaty o błędach są drukowane w oknie terminalu. Każde polecenie wykonane w dowolnej powładzie Linux, takie jak Bash, wykorzystuje trzy zwykłe strumienie we/wy. Deskryptor pliku numerycznego służy do reprezentowania każdego strumienia.

  • Standardowy strumień wejściowy (stdin): 0
  • Standardowy strumień wyjściowy (stdout): 1
  • Standardowy strumień błędów (STDERR): 2

W tym poście zrozumiemy informacje, które są podlegające przekierowaniu stdout i stderr do pliku.

Standardowe wyjście (stdout):

Każdy system operacyjny oparty na Linuksie ma przekonanie domyślnego miejsca dla wykonanego polecenia. Każdy nazywa to pojęcie jako „stdout” lub „standardowe wyjście”, aby ułatwić brzmienie. Twój Bash lub ZSH Shell nieustannie szuka domyślnej lokalizacji wyjściowej. Gdy powłoka wykrywa nowe wyjście, wyświetla je na ekranie terminalu, abyś go zobaczyć. W przeciwnym razie wyśle ​​dane wyjściowe do domyślnej lokalizacji.

Błąd standardowy (STDERR):

Błąd standardowy lub STDDERR jest podobny do standardowego wejścia i wyjścia, ale jest wykorzystywany do przechowywania komunikatów o błędach. Błąd standardowy można przekierować do wiersza polecenia lub pliku za pomocą terminalu. Jeśli chcesz nagrywać lub przechowywać wiadomości w osobnym pliku dziennika lub ukryć komunikaty o błędach, przekierowanie STDERR pomoże Ci. Teraz idźmy w kierunku praktycznej strony przekierowania Stdout i Stderr.

Przekierowanie stdout i stderr do pliku:

Ponieważ przekierowanie jest metodą przechwytywania wyjścia programu i wysyłania go jako wejścia do innego polecenia lub pliku. Strumienie we/wy można przekierować, używając operatora n>, gdzie n jest numerem deskryptora pliku. Do przekierowania stdout używamy „1>”, a do STDERR „2>” jest dodawany jako operator.

Utworzyliśmy plik o nazwie „Próbka.txt ”, aby przechowywać przekierowane wyjście w naszym bieżącym katalogu.

Plik (polecenie>) jest uważany za klasyczny operator przekierowania, który przekierowuje jedynie standardowe wyjście ze standardowym błędem pokazanym w terminalu. Wykazamy również różne opcje przekierowania STDDERR.

Przekierowanie STDERR i STDOUT do oddzielnych plików:

Poniżej znajduje się składnia poleceń do przekierowania stdout i stdderr do oddzielnych plików.

Polecenie> Out 2> Błąd

Poniżej podana polecenie przekieruje dane wyjściowe do pliku „Out” i komunikatów o błędach do pliku „Błąd”.

próbka $ cat.txt> out 2> Błąd

Przekierowanie STDERR do Stdout:

Powszechną praktyką jest przekierowanie STDDERR za pomocą standardowego wyjścia programu do przechowywania wszystkiego w jednym pliku. Oto składnia poleceń do przekierowania STDERR do stdout:

polecenie> Out 2> i 1
$ ls> próbka.TXT 2> i 1
$ cat próbki plik.tekst

> Out przekierowuje przekierowanie stdout do plik próbnego.TXT i 2> i 1 przekierują STDDERR do bieżącej lokalizacji stdout.

Jeśli STDDERR zostanie najpierw przekierowany do stdout, użyj komendy poniżej, aby przekierować stdout do pliku.

polecenie 2> i 1> Plik
$ ls -al 2> i 1> próbki.tekst
$ cat próbki plik.tekst

„&>” Jest również używane do tej samej funkcji, którą wykonuje „2> i 1”.

plik polecenia i>
$ ls &> próbka.tekst
$ cat próbki plik.tekst

Przekierowanie stdout i stderr do jednego pliku:

Wszystkie skorupy nie obsługują tego formy przekierowania, ale Bash i ZSH go obsługują. Stdout i STDDERR można przekierować, stosując następującą składnię.

polecenie i> out
próbka $ cat.txt &> out

W nadchodzącej sekcji artykułu sprawdzimy osobny przykład przekierowania StDout i Stderr.

Przekierowanie stdout do pliku:

Standardowe wyjście jest reprezentowane przez „1” na liście numerów deskryptora plików. W przypadku polecenia przekierowania bez żadnego numeru deskryptora pliku terminal ustawia swoją wartość na „1”. Składnia przekierowania stdout do pliku jest podana w następujący sposób:

plik polecenia>

Używamy próbki „.plik ”do przechowywania standardowego wyjścia polecenia„ LS -al ”

$ ls -al> próbka.tekst
próbka $ cat.tekst
polecenie 1> plik
$ ls 1> próbka.tekst
próbka $ cat.tekst

Przekierowanie STDDERR do pliku:

Użyj operatora „2>” do przekierowania STDDERR do pliku.

polecenie 2> plik
$ ls -al 2> próbka.tekst

Możemy połączyć wykonanie dla stderr i stdout w jednym poleceniu.

Polecenie 2> Błąd.txt 1> wyjście.tekst

W poniższym przykładzie komunikaty o błędach będą przechowywane w „Błąd.txt ”, gdzie„ wyjście.TXT ”będzie miał swoje standardowe wyjście„ LS Command."

$ ls 2> błąd.txt 1> wyjście.tekst
$ CAT Wyjście.tekst

Wniosek:

Posiadanie koncepcji deskryptorów przekierowania i plików dla strumieni we/wy jest bardzo cenne podczas pracy w terminalu Linux. W tym poście rozmawialiśmy o zwykłych strumieniach we/wy, w tym Stdout i Stderr. Pierwsza sekcja tego postu zawiera szczegółowe informacje o przekierowaniu, strumieniach we/wy i deskryptora pliku numerycznego. Następnie widziałeś praktyczny przykład różnych form przekierowania stdout i stdderr.