Potokowanie strumienia danych
Zastosowanie znaku | pozwala na łączenie wyjścia jednego polecenia z wejściem innego.
Dane wygenerowane za pomocą pierwszego polecenia przekazane zostaną na wejście
następnego polecenia i po przetworzeniu przekazane na wejście kolejnego lub na ekran. Tego
typu przetwarzanie danych jest nazywane potokiem. Polecenia często wykorzystywane
potokach:
more
– służy do przeglądania tekstu strona po stronie, jeden ekran na raz, przewijanie stron
możliwe tylko „do przodu”, np.
ls –la | more
,
less
– podobnie jak
more
, ale przewijanie stron możliwe w obu kierunkach, np.
ls –la | less
,
cat
– polecenie wyświetla na ekranie zawartość pliku tekstowego, np.
cat /etc/passwd | less
,
grep
– przeszukuje wskazany strumień danych, szukając linii zawierających ciąg znaków
pasujących do podanego wzorca,
cat /etc/passwd | grep uczen
,
wc
– wypisuje liczbę bajtów, słów lub linii w plikach, np.
ls –la | wc –l
sort
– sortuje, zlepia lub porównuje wszystkie linie z podanych plików, np.
cat /etc/passwd | sort
tee
– rozgałęzienie strumienia. Pobiera dane ze strumienia wejściowego i tworzy dwa
strumienie wyjściowe – jeden podłączony do standardowego wyjścia, a drugi do
wskazanego pliku, np.
cat
/etc/passwd | sort | tee konta_alfabetycznie
Przykład:
ls –la | grep plik | wc –l
W tym przykładzie polecenie
ls –la
wygeneruje zestaw danych, będący listą zbiorów
w katalogu bieżącym (każdy zbiór w nowej linii). Dane te przekazane zostaną na wejście
polecenia
grep
. Polecenie to wyszuka linie zawierające ciąg znaków „plik”. Polecenie
wc
zliczy linie w zbiorze danych uzyskanych na wyjściu polecenia
grep
. W wyniku
przetwarzania danych przez cały potok zostanie uzyskana liczba plików zawierających
w nazwie ciąg znaków „plik”.
Ćwiczenie 1 – Tworzenie potoków danych
1.
Zaloguj się na konto użytkownika root.
2.
Wpisz w konsoli polecenie:
ls –la | wc –l > lista.txt
Polecenie
ls
utworzy listę zbiorów w aktualnym katalogu i przekaże do
przetworzenia przez polecenie
wc
. Polecenie to zliczy liczbę wierszy w liście
i przekieruje wynik do pliku lista.txt.
3.
Wpisać w konsoli polecenie:
ls –la | grep .txt >> lista.txt
Polecenie
ls
utworzy listę zbiorów w aktualnym katalogu i przekaże do
przetworzenia przez polecenie
grep
. Polecenie to odfiltruje zbiory posiadające
w nazwie ciąg znaków
.txt
i dopisze ich wykaz do pliku lista.txt.
4.
Wpisać w konsoli polecenie:
ls –la | grep .txt | wc –l >> lista.txt
Polecenie
ls
utworzy listę zbiorów w aktualnym katalogu i przekaże do
przetworzenia przez polecenie
grep
. Polecenie
grep
odfiltruje zbiory posiadające
w nazwie ciąg znaków
.txt
i przekaże do przetworzenia przez polecenie
wc
.
Polecenie
wc
zliczy liczbę wierszy w liście i dopisze wynik do pliku lista.txt.