SlideShare a Scribd company logo
1 of 9
Przekierowanie strumienia danych
Jacek Tomczak
Przekierowanie strumienia danych
     Każdy uruchomiony w Linuksie proces pobiera z
 pewnego miejsca dane, a w inne wysyła wyniki
 swojego działania i komunikaty o błędach. Dane są
 przesyłane między urządzeniami w postaci
 strumieni. Strumienie danych przypisane każdemu
 procesowi są pokazane na schemacie:

          0                           1
         stdin      PROCES          stdout

                            2
                       stderr
Przekierowanie strumienia danych
• stdin (standard input) – standardowe wejście, z
  którego proces pobiera dane (domyślnie jest to
  klawiatura),
• stdout (standard output) – standardowe
  wyjście, do którego wysyłany jest wynik działania
  procesu (domyślnie jest to ekran),
• stderr (standard error) – standardowe wyjście
  błędów, gdzie trafiają wszystkie komunikaty o
  błędach (domyślnie ekran).
Przekierowanie strumienia danych
  Standardowe wejście i wyjście (strumienie danych) można przekierować.

  Przełączanie standardowego wyjścia (stdin )
• znak „<” umożliwia przekierowanie zawartości pliku do standardowego
  wyjścia, np.
                                   more < plik,
• znak „>” umożliwia przekierowanie strumienia danych ze standardowego
  wyjścia do pliku;
  jeżeli plik istnieje, to jego poprzednia zawartość zostaje usunięta, np.
                                     ls > plik,

• znaki „>>” umożliwiają przekierowanie strumienia danych ze
  standardowego wyjścia do pliku, jeżeli plik istnieje, to nowe dane zostają
  dopisane na końcu pliku.
Przekierowanie strumienia danych
Przykład 1:
                ls –la /usr/bin > wynik
     Rezultat działania powyższego polecenia trafi do
 pliku wynik, jeśli wcześniej nie istniał plik o takiej samej
 nazwie, to zostanie utworzony, jeśli istniał, cała jego
 poprzednia zawartość zostanie nadpisana.

Przykład 2:
                  free –m >> wynik
    Wynik tego polecenia (pokazanie wykorzystania
 pamięci RAM i swap) zostanie dopisany na końcu pliku
 wynik, nie naruszając jego wcześniejszej zawartości.
Przekierowanie strumienia danych
Przełączanie standardowego wejścia (stdout)

• jako standardowe wejście można zamiast klawiatury użyć pliku np.
                           Sort < plik
  Spowoduje wyświetlenie posortowanej zawartości pliku.

Przykad 1:
                       bash < skrypt.sh
  Spowoduje wykonanie instrukcji zawartych w pliku skrypt.sh przez
  interpretator bash.

Przykład 2:
                      sort < grep ‘ala’ plik

  Spowoduje wyświetlenie posortowanych lini zawierających ala.
Przekierowanie strumienia danych
Standardowy strumień błędów (stderr)

• Standardowy strumień błędów jest zwykle wykorzystywany do wyświetlania
  komunikatów o błędach i informacjach przydatnych do debugowania. Jest
  on niezależny od strumienia wyjścia. Zwykle celem strumienia jest,
  podobnie jak przy stdout terminal z którego uruchomiono program aby
  umożliwić zobaczenie błędu nawet wtedy, gdy strumień wyjścia jest
  przekierowany. Jeżeli używamy potoku aby użyć danych wynikowych
  jakiegoś programu jako danych wejściowych dla innego to błędy i tak
  zostaną wypisane na terminalu.

• Gdy strumienie wyjścia i błędów mają ten sam cel (np. terminal) to są
  wyświetlane w takiej kolejności, w jakiej wypisuje je program, o ile nie
  korzysta się z buforowanego wyjścia. W takim wypadku dane z stderr
  wyświetlają się wcześniej, gdyż są zwykle niebuforowane, w przeciwieństwie
  do stdout, które są zwykle zapisywane w buforze przed wyświetleniem.
Przekierowanie strumienia danych
Przełączanie standardowego wyjścia błędów
  Przekierowanie do pliku strumienia diagnostycznego:
                                2> plik
Przykład 1:
                         ls –y 2> ~/error
  W powyższym skrypcie polecenie ls jest użyte z błędną opcją –y;
  komunikat o błędzie trafi do pliku error.
Przekierowanie strumienia danych
Deskryptor pliku

•   W informatyce deskryptor pliku – identyfikator pliku wykorzystywany przez system operacyjny. Po wykonaniu operacji
    otwarcia pliku, deskryptor pliku może być wykorzystywany wielokrotnie przez funkcje systemowe w operacjach
    wejścia/wyjścia.

•   Termin deskryptor pliku jest używany głównie w systemach opracyjnych zgodnych z normą POSIX. W systemach rodziny
    Microsoft Windows używany jest termin "uchwyt pliku".

•   Zgodnie z POSIX deskryptor pliku to liczba całkowita, czyli wartość typu int z języka C. Domyślnie każdy proces ma do
    dyspozycji 3 standardowe deskryptory plików

                            Wartość deskryptora          Nazwa
                                      0                  Standardowe wejście        (stdin)
                                      1                  Standardowe wyjście        (stdout)
                                      2                  Standardowe wyjście diagnostyczne (stderr)

•   Ogólnie deskryptor pliku to Indeks do przechowywanej przez jądro struktury danych zawierającej informacje o wszystkich
    otwartych plikach. W POSIX ta struktura danych jest nazwana tablicą deskryptorów plików i jest odrębna dla każdego
    procesu. Aplikacja użytkownika wykonując operacje plikowe przekazuje do jądra indeks, a jądro zajmuje się w imieniu
    aplikacji operacjami związanymi z obsługą pliku. Aplikacja nie może bezpośrednio czytać z i pisać do tablicy deskryptorów
    plików, zmiany w niej są dokonywane przez system w zależności od wykonywanej operacji na pliku.

•   W systemach Unix deskryptor pliku może odnosić się do pliku, katalogu, urządzenia blokowego lub urządzenia znakowego,
    gniazda, kolejki FIFO, nienazwanego strumienia lub dowiązania symbolicznego.

More Related Content

What's hot

What's hot (17)

Podstawy php
Podstawy phpPodstawy php
Podstawy php
 
Zwiększanie produktywności programisty php
Zwiększanie produktywności programisty phpZwiększanie produktywności programisty php
Zwiększanie produktywności programisty php
 
Podstawy php
Podstawy phpPodstawy php
Podstawy php
 
PB.NET II (System.IO)
PB.NET II (System.IO)PB.NET II (System.IO)
PB.NET II (System.IO)
 
Python szybki start
Python   szybki startPython   szybki start
Python szybki start
 
LinuxKurs_Lekcja05
LinuxKurs_Lekcja05LinuxKurs_Lekcja05
LinuxKurs_Lekcja05
 
ansible kmonticolo bezlogo
ansible kmonticolo bezlogoansible kmonticolo bezlogo
ansible kmonticolo bezlogo
 
ZamCamp - Ciekawe sposoby debugowania kodu
ZamCamp - Ciekawe sposoby debugowania koduZamCamp - Ciekawe sposoby debugowania kodu
ZamCamp - Ciekawe sposoby debugowania kodu
 
OSFile
OSFileOSFile
OSFile
 
Bash 2 ----- wykład3i4
Bash 2   -----      wykład3i4Bash 2   -----      wykład3i4
Bash 2 ----- wykład3i4
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
Sniffing
SniffingSniffing
Sniffing
 
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski
 
DTrace
DTraceDTrace
DTrace
 
Es jak FTPS SFTP
Es jak FTPS SFTPEs jak FTPS SFTP
Es jak FTPS SFTP
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.
 
SQLite 2010
SQLite 2010SQLite 2010
SQLite 2010
 

Similar to Przekierowanie strumienia danych

Similar to Przekierowanie strumienia danych (20)

Podążając śladami użytkownika Windows – elementy informatyki śledczej
Podążając śladami użytkownika Windows –elementy informatyki śledczejPodążając śladami użytkownika Windows –elementy informatyki śledczej
Podążając śladami użytkownika Windows – elementy informatyki śledczej
 
Programowanie
ProgramowanieProgramowanie
Programowanie
 
Programowanie
ProgramowanieProgramowanie
Programowanie
 
Python io
Python ioPython io
Python io
 
His
His His
His
 
What is Linux?
What is Linux?What is Linux?
What is Linux?
 
Rodzaje i funkcje systemów operacyjnych
Rodzaje i funkcje systemów operacyjnychRodzaje i funkcje systemów operacyjnych
Rodzaje i funkcje systemów operacyjnych
 
Sciagamy z netu 2
Sciagamy z netu 2Sciagamy z netu 2
Sciagamy z netu 2
 
Wyklad2
Wyklad2Wyklad2
Wyklad2
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
2
22
2
 
Zwiększanie produktywności programisty php (v2)
Zwiększanie produktywności programisty php (v2)Zwiększanie produktywności programisty php (v2)
Zwiększanie produktywności programisty php (v2)
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
 
Otwarte oprogramowanie - zaczerpnij ze źródła
Otwarte oprogramowanie - zaczerpnij ze źródłaOtwarte oprogramowanie - zaczerpnij ze źródła
Otwarte oprogramowanie - zaczerpnij ze źródła
 
Mts2009 krzysztof binkowski - metody pozyskiwania i zabezpieczania danych w...
Mts2009   krzysztof binkowski - metody pozyskiwania i zabezpieczania danych w...Mts2009   krzysztof binkowski - metody pozyskiwania i zabezpieczania danych w...
Mts2009 krzysztof binkowski - metody pozyskiwania i zabezpieczania danych w...
 
3
33
3
 
Instalacja sterowników urządzeń peryferyjnych
 Instalacja sterowników urządzeń peryferyjnych Instalacja sterowników urządzeń peryferyjnych
Instalacja sterowników urządzeń peryferyjnych
 
Erlang
ErlangErlang
Erlang
 
Debian za kulisami
Debian za kulisamiDebian za kulisami
Debian za kulisami
 
Układy z pamięcią
Układy z pamięciąUkłady z pamięcią
Układy z pamięcią
 

Przekierowanie strumienia danych

  • 2. Przekierowanie strumienia danych Każdy uruchomiony w Linuksie proces pobiera z pewnego miejsca dane, a w inne wysyła wyniki swojego działania i komunikaty o błędach. Dane są przesyłane między urządzeniami w postaci strumieni. Strumienie danych przypisane każdemu procesowi są pokazane na schemacie: 0 1 stdin PROCES stdout 2 stderr
  • 3. Przekierowanie strumienia danych • stdin (standard input) – standardowe wejście, z którego proces pobiera dane (domyślnie jest to klawiatura), • stdout (standard output) – standardowe wyjście, do którego wysyłany jest wynik działania procesu (domyślnie jest to ekran), • stderr (standard error) – standardowe wyjście błędów, gdzie trafiają wszystkie komunikaty o błędach (domyślnie ekran).
  • 4. Przekierowanie strumienia danych Standardowe wejście i wyjście (strumienie danych) można przekierować. Przełączanie standardowego wyjścia (stdin ) • znak „<” umożliwia przekierowanie zawartości pliku do standardowego wyjścia, np. more < plik, • znak „>” umożliwia przekierowanie strumienia danych ze standardowego wyjścia do pliku; jeżeli plik istnieje, to jego poprzednia zawartość zostaje usunięta, np. ls > plik, • znaki „>>” umożliwiają przekierowanie strumienia danych ze standardowego wyjścia do pliku, jeżeli plik istnieje, to nowe dane zostają dopisane na końcu pliku.
  • 5. Przekierowanie strumienia danych Przykład 1: ls –la /usr/bin > wynik Rezultat działania powyższego polecenia trafi do pliku wynik, jeśli wcześniej nie istniał plik o takiej samej nazwie, to zostanie utworzony, jeśli istniał, cała jego poprzednia zawartość zostanie nadpisana. Przykład 2: free –m >> wynik Wynik tego polecenia (pokazanie wykorzystania pamięci RAM i swap) zostanie dopisany na końcu pliku wynik, nie naruszając jego wcześniejszej zawartości.
  • 6. Przekierowanie strumienia danych Przełączanie standardowego wejścia (stdout) • jako standardowe wejście można zamiast klawiatury użyć pliku np. Sort < plik Spowoduje wyświetlenie posortowanej zawartości pliku. Przykad 1: bash < skrypt.sh Spowoduje wykonanie instrukcji zawartych w pliku skrypt.sh przez interpretator bash. Przykład 2: sort < grep ‘ala’ plik Spowoduje wyświetlenie posortowanych lini zawierających ala.
  • 7. Przekierowanie strumienia danych Standardowy strumień błędów (stderr) • Standardowy strumień błędów jest zwykle wykorzystywany do wyświetlania komunikatów o błędach i informacjach przydatnych do debugowania. Jest on niezależny od strumienia wyjścia. Zwykle celem strumienia jest, podobnie jak przy stdout terminal z którego uruchomiono program aby umożliwić zobaczenie błędu nawet wtedy, gdy strumień wyjścia jest przekierowany. Jeżeli używamy potoku aby użyć danych wynikowych jakiegoś programu jako danych wejściowych dla innego to błędy i tak zostaną wypisane na terminalu. • Gdy strumienie wyjścia i błędów mają ten sam cel (np. terminal) to są wyświetlane w takiej kolejności, w jakiej wypisuje je program, o ile nie korzysta się z buforowanego wyjścia. W takim wypadku dane z stderr wyświetlają się wcześniej, gdyż są zwykle niebuforowane, w przeciwieństwie do stdout, które są zwykle zapisywane w buforze przed wyświetleniem.
  • 8. Przekierowanie strumienia danych Przełączanie standardowego wyjścia błędów Przekierowanie do pliku strumienia diagnostycznego: 2> plik Przykład 1: ls –y 2> ~/error W powyższym skrypcie polecenie ls jest użyte z błędną opcją –y; komunikat o błędzie trafi do pliku error.
  • 9. Przekierowanie strumienia danych Deskryptor pliku • W informatyce deskryptor pliku – identyfikator pliku wykorzystywany przez system operacyjny. Po wykonaniu operacji otwarcia pliku, deskryptor pliku może być wykorzystywany wielokrotnie przez funkcje systemowe w operacjach wejścia/wyjścia. • Termin deskryptor pliku jest używany głównie w systemach opracyjnych zgodnych z normą POSIX. W systemach rodziny Microsoft Windows używany jest termin "uchwyt pliku". • Zgodnie z POSIX deskryptor pliku to liczba całkowita, czyli wartość typu int z języka C. Domyślnie każdy proces ma do dyspozycji 3 standardowe deskryptory plików Wartość deskryptora Nazwa 0 Standardowe wejście (stdin) 1 Standardowe wyjście (stdout) 2 Standardowe wyjście diagnostyczne (stderr) • Ogólnie deskryptor pliku to Indeks do przechowywanej przez jądro struktury danych zawierającej informacje o wszystkich otwartych plikach. W POSIX ta struktura danych jest nazwana tablicą deskryptorów plików i jest odrębna dla każdego procesu. Aplikacja użytkownika wykonując operacje plikowe przekazuje do jądra indeks, a jądro zajmuje się w imieniu aplikacji operacjami związanymi z obsługą pliku. Aplikacja nie może bezpośrednio czytać z i pisać do tablicy deskryptorów plików, zmiany w niej są dokonywane przez system w zależności od wykonywanej operacji na pliku. • W systemach Unix deskryptor pliku może odnosić się do pliku, katalogu, urządzenia blokowego lub urządzenia znakowego, gniazda, kolejki FIFO, nienazwanego strumienia lub dowiązania symbolicznego.