A A A
logo2




Redyrekcje



Każdemu procesowi przypisuje się standardowy strumień wejściowy (STDIN) oraz standardowy strumień wyjściowy (STDOUT). Strumień wejściowy związany jest z informacjami wpisywanymi przez użytkownika, a wyjściowy z ekranem terminala. Istnieje też strumień błędu (STDERR). Redyrekcja czyli inaczej przekierowanie strumienia. Mamy następujące oznaczenia:

> - zmiana standardowego wyjścia na plik
>> - dopis do pliku
< - zmiana standardowedo wejścia na plik
>!- przekierowanie do pliku bez względu czy istnieje
>&- zmiana strumienia błędu


Wyświetlić plik na standardowy strumień wyjścia możemy za pomocą polecenia cat.


owi@laptop:~$ cat /etc/passwd


Wyświetlić plik na standardowy strumień wyjścia możemy za pomocą polecenia cat.


owi@laptop:~$ cat /etc/passwd >


Za pomocą ">" można przekierować standardowy strumień wyjścia na plik. Wystarczy napisać cat > nazwa pliku, aby informacje wpisane później zostały do tego pliku przekazane.


owi@laptop:~$ cat > nazwapliku


Za pomocą ">" można również połączyć dwa pliki. Wystarczy napisać cat nazwapliku1 nazwapliku2 > nazwapliku3, aby informacje z pliku1 oraz pliku2 zostały połaczone w jeden plik o nazwie plik3.


owi@laptop:~$ cat nazwapliku1 nazwapliku2 > nazwapliku3


Znak ">>" umożliwia dopisanie informacjii do pliku. Chcąc dodać pewnie dane do pliku należy napisać cat >> nazwapliku <enter> ... dane. Takie polecenie może być przydatne do dopisania kolejnych danych bez utracenia poprzednich.


owi@laptop:~$ cat >> nazwapliku


Za pomocą redyrekcji możliwe jest także przekazywanie wyniku działania programu do pliku. Przykładem może być polecenie date. Polecenie to wyświetla aktualna datę oraz godzinę. Aby zapisać obecna date w pliku można użyć przekierowania.


owi@laptop:~$ date > nazwapliku


Redyrekcje możemy ze sobą łaczyć np. dane do programu zostaną pobrane z pliku dane1. Program da pewien wynik, który zostanie zpaisany do pliku1.


owi@laptop:~$ program < dane1 > plik1


Można także przekierować plik na jakieś urządzenie:


owi@laptop:~$ cat nazwapliku > /dev/audio






Potoki



Potoki są sposobem komunikacji między procesami. Komunikacja ta polega na przekazaniu wyniku działania jednego procesu na wejście drugiego. W systemie Unix potoki symbolizuje znak "|". Załużmy, że chcemy wyświetlić pewien plik, a później policzyć ile znajduje się w nim linii. Możemy użyć do tego potoku:


owi@laptop:~$ cat nazwapliku1|wc -l

Najpierw został wyświetlony plik1, a później policzone linie. Tak więc potoki to nic innego jak łańcuchowe wywoływanie funkcji. Oczywiście można korzystać z większej ilości funkcji na raz np:


owi@laptop:~$ who|sort|cut -f1 -d" "|uniq|wc -l

Powyższy przykład pokazuje jak za pomocą potoków wyświetlić ilość zalogowanych użytkowników. Najpierw zostały wyświetlone informacje o zalogowanych, następnie zostały one posortowane alfabetycznie. Kolejny krok to wybranie jedynie loginów oraz usunięcie powtarzających się. Na koniec zostało już tylko zliczenie linii.




Autor: Aleksandra Przybyło
aleksandraprzybylo@gmail.com