O większości poleceń shella można myśleć jako o filtrach, tak jak przedstawiono to na rysunku poniżej:
Polecenie ma jedno wejście nazywane wejściem standardowym (standard input skrót stdin), za pomocą którego przyjmowana jest informacja wejściowa znak po znaku. Wyjścia są dwa: standardowe wyjście podstawowe (standard output, skrót stdout) oraz standardowe wyjście błędów (standard error skrót stderr). Każde polecenie filtruje dane ze standardowego wejścia, przetwarza je w specyficzny sposób, i przekazuje na standardowe wyjście. Domyślnym strumieniem danych wejściowych jest klawiatura. Natomiast dane wyjściowe i komunikaty o błędach są przekazywane na ekran. Trzy liczby które widzimy na rysunku 0 , 1 , 2 są zarezerwowane i odpowiadają trzem plikom które są zawsze uruchamiane w momencie egzekucji polecenia:
stdin - strumień danych z klawiatury terminale czyli dane wejściowe → 0
stdout – strumień danych wysyłany na ekran terminala czyli dane wyjściowe → 1
stderr - strumień znaków informujących o błędach → 2
Które z poleceń Linuxa możemy zaliczyć do filtrów ? Czym jest filtr ? Jest on poleceniem, które wykonuje pewno działanie na plikach zawierających tekst. Rezultat tego działania , który jest także tekstem, wyświetlany jest na ekranie (chociaż nie tylko). Powiązanie między sobą wielu filtrów (czyli jednoczesna egzekucja kilku poleceń) jest możliwa dzięki użyciu metody zwanej przekierowaniem lub innej metody nazywanej „potokiem” (patrz rozdział potoki).
Jako filtry traktować będziemy polecenia, które:
→ podlegają mechanizmowi wejścia/wyjścia standardowego
→ pobierają strumień danych zawsze z wejścia standardowego, przetwarzają dane i wysyłają je na wyjście standardowe, natomiast komunikaty o błędach zostają przez polecenie przekierowane do wyjścia błędów
→ oczekują na wejście prostego strumienia znaków i ten strumień znaków po przetworzeniu wysyłają na standardowe wyjście.
Z tej definicji wynika, że polecenie who cal czy ls nie są filtrami. Z punktu widzenia pracy użytkownika Linuxa, filtry służą przede wszystkim do operowania na plikach testowych i w połączeniu z mechanizmem potoków tworzą niezwykle wydajne a zarazem proste narzędzie.
Kurs Linux - Filtry Linux