Potoki - Linux
Potok jest ciągiem poleceń prostych lub złożonych, które są odseparowane od siebie przez znak |. Rezultat każdego polecenia – z wyjątkiem ostatniego – jest traktowane przez polecenie następne jako jego standardowe wejście. Innymi słowy - potok – jest mechanizmem komunikacji pomiędzy różnymi poleceniami, który im pozwala wymieniać między sobą dane.
we polecenie1 wy we polecenie2 wy we polecenie3 wy
Operatorem rozdzielającym polecenia w potoku jest operator pipe | , np. ls | wc -l Rezultat końcowy wykonania potoku poleceń jest inny niż rezultat kolejno wykonywanych poleceń składowych potoku np. efekt wykonania polecenia ls i następnie polecenia wc -l jest zupełnie inny niż ls | wc -l.
Rozgałęzianie potoku.
Jeżeli potrzebujemy uzyskać dane pośrednie potoku np. dane wyjściowe polecenia2, możemy to zrobić stosując polecenie tee.
we polecenie1 wy we polecenie2 wy tee we polecenie3 wy
wy polecenia2 Np.ls -l | tee plikb | wc -l
Efektem działania polecenia tee jest utworzenie pliku plikb w którym są dane wyjściowe polecenia ls -l
Polecenia często wykorzystywane w 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
Ćwiczenia:
Wykonaj poniższe polecenia, sprawdź efekt ich działania, wykonaj rozgałęzienie potoków po pierwszym lub drugim poleceniu a wyniki zapisz do pliku.
dpkg --list | wc -l
apt list --installed | wc -l who | wc -l
cat /etc/passwd | wc -l cat /etc/group | wc -l
cat /etc/passwd | grep /bin/bash | wc -l ls -l | grep ‘’-wxr-xr-x’’ | more ls /home | grep ”a” | wc –l
ps -u root | grep "getty find / -iname 'a*' | less