Lekcje modułu (2/2)
Potoki i filtry (grep i |)
Jedną z najpotężniejszych funkcji wiersza poleceń systemu Linux jest możliwość łączenia różnych poleceń w taki sposób, aby wyjście jednego stawało się wejściem kolejnego. Technika ta jest realizowana za pomocą potoków (pipelines) i jest obsługiwana przez polecenie filtrujące grep.
Filtr tekstowy: grep
Polecenie grep (Global Regular Expression Print) wyszukuje określony tekst w jednym lub kilku plikach i wypisuje na ekranie pasujące linie:
grep "parola" [nome_file]Przydatne opcje dla grep
grep -i "errore" server.log: Wykonuje wyszukiwanie nieczułe na wielkość liter (ignoruje różnicę między wielkimi i małymi literami, znajdując zarówno "Errore", jak i "ERROR").grep -n "connessione" server.log: Pokazuje również odpowiedni numer linii w pliku.grep -v "INFO" server.log: Odwraca wyszukiwanie, pokazując tylko te linie, które nie zawierają określonego słowa.
Łączenie poleceń: Potok (Pipeline) |
Operator potoku jest reprezentowany przez pionową kreskę |. Umożliwia on przesłanie standardowego wyjścia lewego polecenia bezpośrednio do standardowego wejścia prawego polecenia:
[comando1] | [comando2]Na przykład, jeśli plik dziennika (log) jest ogromny i chcesz wyszukać w nim słowo bez otwierania go w całości, możesz połączyć cat i grep:
cat logs/server.log | grep ERRORTo polecenie odczytuje cały plik server.log za pomocą cat, ale zamiast wypisywać go na ekranie, przekazuje go do grep, które wyodrębni i wyświetli tylko linie zawierające słowo "ERROR".
Przykłady użycia i typowe błędy
Jeśli wykonasz wyszukiwanie słowa przy użyciu małych liter (np. "post") w pliku, który zawiera tylko wielkie litery (np. "POST"), grep nic nie zwróci:
grep "post" logs/access.log
# Output: (brak wyników, wyszukiwanie jest domyślnie czułe na wielkość liter)Aby znaleźć linię niezależnie od tego, jak jest napisana, użyj opcji -i:
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234Jeśli określony plik nie istnieje, grep zwróci błąd:
grep "ERROR" file_inesistente.log
# Output:
# grep: file_inesistente.log: No such file or directorySpróbuj sam
Ejercicio 1: Cerca errori nei log
Przefiltruj plik 'logs/server.log', um otwarcie i wyświetlić tylko te linie, które zawierają słowo 'ERROR' (wielkimi literami).
Pokaż wskazówkę
Użyj polecenia grep, po którym podasz szukane słowo oraz ścieżkę do pliku.
Rozwiązanie dostępne po 3 próbach
Ejercicio 2: Pipeline e filtri
Użyj polecenia cat, aby odczytać plik 'logs/server.log', i skieruj jego wyjście za pomocą potoku (|) do polecenia grep, aby przefiltrować i wypisać tylko te linie, które zawierają słowo 'WARNING'.
Pokaż wskazówkę
Połącz cat logs/server.log z grep WARNING za pomocą znaku potoku '|'.
Rozwiązanie dostępne po 3 próbach
Ejercicio 3: Ricerca case-insensitive
Wyszukaj wszystkie linie zawierające słowo 'post' (zarówno wielkimi, jak i małymi literami) w pliku 'logs/access.log', używając odpowiedniej opcji polecenia grep.
Pokaż wskazówkę
Użyj grep z opcją -i, aby zignorować wielkość liter.
Rozwiązanie dostępne po 3 próbach