| Strumienie danych
 Każdy uruchomiony w Linuxie proces skądś pobiera dane, gdzieś wysyła wyniki swojego działania i
komunikaty o błędach. Tak więc procesowi przypisane są trzy strumienie danych: 
Rys.Strumienie danychstdin (ang. standard input) czyli standardowe wejście, skąd proces pobiera dane, domyślnie jest to klawiatura
stdout (ang. standard otuput) to standardowe wyjście, gdzie wysyłany jest wynik działania procesu, domyślnie to ekran
stderr (ang. standard error) standardowe wyjście błędów, tam trafiają wszystkie komunikaty o błędach, domyślnie ekran
   Linux wszystko traktuje jako plik, niezależnie od tego czy to jest plik zwykły, katalog, urządzenie blokowe (klawiatura, ekran) itd. Nie inaczej jest ze strumieniami,
BASH identyfikuje je za pomocą przyporządkowanych im liczb całkowitych ( od 0 do 2 ) tak zwanych deskryptorów plików.I tak: 
0 to plik z którego proces pobiera dane stdin
1 to plik do którego proces pisze wyniki swojego działania stdout
2 to plik do którego trafiają komunikaty o błędach stderr
 Za pomocą operatorów przypisania można manipulować strumieniami, poprzez przypisanie deskryptorów: 0, 1, 2 innym plikom, niż tym reprezentującym
klawiaturę i ekran. 
Przełączanie standardowego wejścia
Zamiast klawiatury jako standardowe wejście można otworzyć plik:
 < plik
 Przykład:
 Najpierw stwórzmy plik lista o następującej zawartości:
 
slackaware
redhat
debian
caldera
Użyjemy polecenia sort dla którego standardowym wejściem będzie nasz plik. sort < lista
 Wynikiem będzie wyświetlenie na ekranie posortowanej zawartość pliku lista:
 
caldera
debian
redhat
slackware
Przełączanie standardowego wyjścia
 Wynik jakiegoś polecenia można wysłać do pliku, a nie na ekran, do tego celu używa się operatora:
 > plik
 Przykład:
 ls -la /usr/bin > ~/wynik
 Rezultat działania polecenia ls -la /usr/bin trafi do pliku o nazwie 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. Jeśli chcemy aby dane wyjściowe dopisywane były na końcu pliku, bez wymazywania jego wcześniejszej zawartości, stosujemy operator: 
 >> plik
 Przykład:
 free -m >> ~/wynik
 Wynik polecenia free -m (pokazuje wykorzystanie pamięci RAM i swap'a) zostanie dopisany na końcu pliku wynik, nie naruszając jego wcześniejszej zawartości.Przełączanie standardowego wyjścia błędów
 Do pliku można też kierować strumień diagnostyczny:
 2> plik
 Przykład:
W powyższym skrypcie polecenie ls jest użyte z błędną opcją -y, komunikat o błędzie trafi do pliku error.
#!/bin/bash
echo "Stderr jest skierowane do pliku error"
ls -y 2< ~/error    #błąd
 Za pomocą operatora:
 << plik
 można dopisać do tego samego pliku kilka komunikatów o błędach, dopisanie kolejnego nie spowoduje skasowania wcześniejszej zawartości pliku. Przykład:
#!/bin/bash
echo "Stderr jest skierowane do pliku error"
ls -y 2> ~/error             #błąd
cat /etc/shadow 2> ~/error   #błąd2
 Jako błąd drugi zostanie potraktowane polecenie cat /etc/shadow (zakładając, że zalogowałeś się jako użytkownik)
ponieważ prawo odczytu pliku /etc/shadow ma tylko root. |