Jak używać strumieni stdin, stderr i stdout w Bash

Jak używać strumieni stdin, stderr i stdout w Bash

Trzy strumienie są otwierane po uruchomieniu systemu operacyjnego Linux. To są stdin, stdout i stdderr. Pełna forma stdin jest standardowe wejście, które służy do przyjmowania danych wejściowych od użytkownika. Pełna forma stdout jest standardowym wyjściem, który służy do przechowywania wyjścia polecenia w strumieniu stdout. Pełna forma STDDERR to błąd standardowy, który służy do przechowywania komunikatu o błędzie, który jest generowany z dowolnego polecenia w strumieniu danych. Zastosowania tych strumieni są pokazane w tym samouczku. Odpowiednie wartości numeryczne identyfikatora stdina, stdout i STDERR wynoszą 0, 1 i 2.

Operatorzy przekierowania stdin, stdout i stdderr

    • „„<” or “0<” is used for the stdin stream.
    • „>” Lub „1>” jest używany dla strumienia stdout.
    • „2” jest używany dla strumienia STDDERR.

Zastosowania stdina, stdout i stdderr

Zastosowania stdina, stdout i stdderr są pokazane w tej części samouczka przy użyciu wielu przykładów.

Przykład 1: użycie stdina

Metoda przyjmowania treści pliku i drukowania go w terminalu jest pokazana w tym przykładzie.

Uruchom następujące polecenie „CAT”, aby utworzyć plik tekstowy o nazwie TestData.TXT z pewną treścią:

$ cat> testData.tekst


Uruchom następujące polecenie „CAT”, aby dołączyć część treści do testData.plik txt:

$ cat >> testData.tekst


Uruchom następujące polecenie „CAT”, aby uzyskać dane wejściowe z testData.plik txt i wydrukuj go w terminalu:

$ cat < testdata.txt


Wyjście:

Pojawi się następujące dane wyjściowe po wykonaniu poprzednich poleceń po dodaniu ciągu „Linuxhint.com ”i„ Język scenariusza ”w testData.plik txt:


Przykład 2: użycie stdout

Metoda tworzenia pliku za pomocą rury (|) i operatora przekierowania jest pokazana w tym przykładzie.

Uruchom następujące polecenie, aby zapisać dane ciągu w pliku tekstowym o nazwie TestData2.txt przez rurociągi. Wyjście polecenia „Echo” jest wysyłane na wejście polecenia „CAT” za pomocą operatora rury (|):

$ echo „Learn Bash Programming” | Cat> TestData2.tekst


Uruchom następujące polecenie „CAT”, aby sprawdzić zawartość testData2.plik txt:

$ CAT TESTDATA2.tekst


Wyjście:

Pojawi się następujące dane wyjściowe po wykonaniu poprzednich poleceń. Zgodnie z wyjściem wyjście polecenia „Echo” jest zapisane do testData2.plik txt:


Uruchom następujące polecenie, aby zapisać dane wyjściowe polecenia „LS -L” w liście o nazwie plik tekstu.TXT za pomocą operatora przekierowania ('>'):

$ ls -l> lista.tekst


Uruchom następujące polecenie „CAT”, aby sprawdzić zawartość listy.plik txt:

Lista $ CAT.tekst


Wyjście:

Pojawi się następujące dane wyjściowe po wykonaniu poprzednich poleceń. Zgodnie z wyjściem, wyjście polecenia „LS -L” jest zapisane na liście.plik txt:


Przykład 3: użycie stdina i stdout

Metoda używania zarówno stdin, jak i stdout do pobrania danych z pliku i zapisania go w pliku jest pokazana w tym przykładzie.

Uruchom następujące polecenie „CAT”, aby wziąć treść testData.plik txt i zapisz go do pliku testowego.plik txt i terminal:

$ cat < testdata.txt > test testowy.tekst


Uruchom następujące polecenie „CAT”, aby wydrukować zawartość TestData.plik txt:

$ CAT TESTDATA.tekst


Uruchom następujące polecenie „CAT”, aby wydrukować zawartość pliku testowego.plik txt:

$ CAT TestFile.tekst


Wyjście:

Pojawi się następujące dane wyjściowe po wykonaniu poprzednich poleceń. Zgodnie z wyjściem zawartość TestData.plik txt jest zapisany w pliku testowym.plik txt i wydrukowany w terminalu:


Przykład 4: Zastosowanie STDERR

Zawartość błędu standardowego można wydrukować w terminalu lub przekierować do pliku lub wysłać do /dev /null, który działa jak kosz na temat recyklingu. W tym przykładzie pokazano różne sposoby przekazywania błędu standardowego.

Poniższe polecenie jest prawidłowe i drukuje ciąg „Hello” z nową linią. Tak więc dla następującego polecenia nie jest generowany żaden błąd standardowy:

$ printf "%s \ n" "hello"


Następujące polecenie jest nieprawidłowe, ponieważ nie ma polecenia o nazwie „pirntf”. Tak więc generowany jest błąd standardowy, a błąd jest wydrukowany w terminalu:

$ pirntf "%s \ n" "hello"


Wyjście:

Pojawi się następujące dane wyjściowe po wykonaniu poprzedniego polecenia. Zgodnie z wyjściem błąd standardowy jest wydrukowany w terminalu:


Czasami wymaga wydrukowania niestandardowego błędu, ukrywając błąd standardowy, aby błąd był bardziej zrozumiały dla użytkowników. To zadanie można wykonać poprzez przekierowanie błędu do /dev /null. „2>” jest tutaj używany do przekierowania błędu do /dev /null.

Uruchom następujące polecenie, aby przekierować błąd do /dev /null, który nie wyświetli żadnego błędu, jeśli istnieje jakikolwiek błąd:

$ pirntf "%s \ n" "hello" 2> /dev /null


Wyjście:

Pojawi się następujące dane wyjściowe po wykonaniu poprzedniego polecenia. Zgodnie z wyjściem błąd standardowy nie jest wydrukowany w terminalu w celu przekierowania do /dev /null:


Czasami błąd standardowy wymaga przechowywania w pliku do przyszłego użycia. To zadanie można wykonać poprzez przekierowanie błędu do pliku za pomocą operatora „2>”.

Uruchom następujące polecenie, aby przekierować błąd standardowy do pliku o nazwie Błąd Plik.tekst:

$ pirntf "%s \ n" "hello" 2> błąd plik.tekst


Uruchom następujące polecenie, aby sprawdzić zawartość pliku błędu.plik txt:

$ CAT Errorfile.tekst


Wyjście:

Pojawi się następujące dane wyjściowe po wykonaniu poprzednich poleceń. Zgodnie z wyjściem błąd standardowy jest prawidłowo zapisywany w pliku błędu.plik txt:


Błąd standardowy można przekierować zarówno do /dev /null, jak i pliku błędu.plik txt za pomocą następującego polecenia:

$ pirntf "%s \ n" "hello" 2> /dev /null> błąd plik.tekst

Wniosek

Zastosowania stdin, stdout i stdderr są wyjaśnione w tym samouczku przy użyciu wielu przykładów, które pomogą użytkownikom Linux w zrozumieniu koncepcji tych strumieni i poprawnie ich użycia w razie potrzeby.