Wprowadzenie
Terminal to nie tylko narzędzie do poruszania się po systemie i zarządzania plikami. Bash daje Ci możliwość przetwarzania danych w locie, bez otwierania programów graficznych.
W tej lekcji nauczysz się:
- jak wyszukiwać tekst w plikach,
- jak działa system strumieni Bash (standardowe wejście/wyjście/błędy),
- oraz jak wyświetlać wybrane fragmenty plików.
To bardzo ważne narzędzia, które pozwolą Ci pracować szybciej i efektywniej.
1. Polecenie grep – wyszukiwanie wzorców w plikach
grep to jedno z najczęściej używanych narzędzi w Linuksie. Pozwala wyszukiwać linie zawierające określony tekst lub wzorzec (również regexy).
Podstawowe użycie:
grep "tekst" plik.txt
Znajduje wszystkie linie w pliku, które zawierają słowo „tekst”.
Najważniejsze opcje grep
1. -i – ignoruj wielkość liter
grep -i "linux" opis.txt
Znalezione zostaną linie zawierające: Linux, linux, LiNuX…
2. -n – pokaż numery linii
grep -n "Ubuntu" systemy.txt
3. -r – wyszukiwanie rekurencyjne w katalogach
grep -r "error" /var/log
4. -v – odwrócenie wyszukiwania
Pokazuje linie niepasujące do wzorca.
grep -v "test" dane.txt
5. -E – wyszukiwanie z wyrażeniami regularnymi (regex)
grep -E "plik[0-9]+" lista.txt
Przykłady użycia grep
- Znajdź linie zawierające nazwę użytkownika:
grep "$USER" /etc/passwd
- Wyświetl linie zawierające „error” w logach:
grep -r "error" .
- Szukaj linijek niezawierających słowa „INFO”:
grep -v "INFO" log.txt
2. Przekierowywanie strumieni w Bashu
Każde polecenie w Bashu pracuje na trzech strumieniach:
- 0 – stdin (standardowe wejście),
- 1 – stdout (standardowe wyjście),
- 2 – stderr (standardowe błędy).
Możesz przekierowywać te strumienie do plików lub innych poleceń.
1. Zapis wyjścia do pliku – „>”
ls > pliki.txt
Nadpisuje plik pliki.txt, wpisując do niego wynik komendy.
2. Dopisywanie do pliku – „>>”
date >> log.txt
Dopisuje linię z datą na końcu pliku.
3. Przekierowywanie wejścia – „<”
cat < plik.txt
Rzadziej używane, ale działa jak:
cat plik.txt
4. Przekierowanie błędów – „2>”
ls nieistnieje 2> bledy.txt
Zapisuje komunikaty błędów do pliku bledy.txt.
5. Przekierowanie wszystkiego – „&>”
polecenie &> wynik.txt
Umieszcza w pliku oba strumienie: wyjście i błędy.
6. Potoki – „|”
Potok przekazuje wynik jednego polecenia jako wejście drugiego.
Przykład:
ls | grep ".txt"
Znajduje wszystkie pliki .txt w bieżącym katalogu.
Inne przykłady:
ps aux | grep firefox
dmesg | grep -i error
history | grep sudo
3. head i tail – szybki podgląd plików
head – pierwsze linie pliku
head plik.txt
Domyślnie pokazuje pierwsze 10 linii.
Możesz zmienić liczbę:
head -n 20 plik.txt
tail – ostatnie linie pliku
tail plik.txt
Również domyślnie 10 ostatnich linii.
Zmiana liczby:
tail -n 50 log.txt
tail -f – śledzenie zmian w czasie rzeczywistym
Świetne do obserwowania logów:
tail -f /var/log/syslog
Program będzie pokazywał nowe linie pojawiające się w pliku.
Aby przerwać: Ctrl + C
4. Przykłady praktyczne (łączenie narzędzi)
- Znajdź błędy w logach:
grep -i error /var/log/syslog
- Pokaż pierwsze linie wyników wyszukiwania:
grep -i error /var/log/syslog | head
- Pokaż ostatnie 20 wyników logów nie zawierających słowa „INFO”:
grep -v "INFO" log.txt | tail -n 20
- Zapisz linie z hasłem „user” do pliku:
grep "user" baza.txt > znalezione.txt
- Dopisz wyniki wyszukiwania do istniejącego pliku:
grep -r "config" /etc >> raport.txt
5. Ćwiczenia praktyczne (6 zadań)
Ćwiczenie 1 – Podstawy grep
W pliku dane.txt:
- Znajdź wszystkie linie zawierające słowo „Ubuntu”.
- Znajdź linie zawierające słowo „linux”, ignorując wielkość liter.
- Znajdź numery linii ze słowem „root”.
Ćwiczenie 2 – Praca z potokami
- Wyświetl wszystkie procesy zawierające słowo „bash”.
- Przefiltruj je przez
grep -v, aby ukryć linie zawierającegrep. - Połącz wynik z
head, aby zobaczyć tylko pierwsze 3 linie.
Ćwiczenie 3 – Przekierowania plików
- Przekieruj wynik polecenia
lsdo plikulista.txt. - Dopisz datę do tego pliku.
- Przekieruj błędy z polecenia
ls nie_ma_takiegodo plikublad.txt.
Ćwiczenie 4 – head i tail
- Wyświetl pierwsze 5 linii pliku
/etc/passwd. - Wyświetl ostatnie 8 linii tego samego pliku.
- Użyj
tail -f, aby obserwować plik/var/log/syslogprzez kilka sekund.
Ćwiczenie 5 – Wyszukiwanie w katalogach
- Znajdź wszystkie pliki w bieżącym katalogu zawierające słowo „test”.
- Znajdź wszystkie pliki w całym katalogu domowym zawierające słowo „bash”.
- Wynik zapisz do pliku
wyniki.txt.
Ćwiczenie 6 – Łączenie technik
Połącz narzędzia w jednym poleceniu:
- Znajdź linie w
/var/log/syslogzawierającenetwork. - Przekieruj wynik do
grep -v error(usuń błędy). - Wyświetl tylko pierwsze 10 wyników.
- Zapisz te wyniki do pliku
raport_network.txt.
Podsumowanie
W tej lekcji nauczyłeś się trzech fundamentów pracy w terminalu:
- grep – potężne narzędzie do wyszukiwania,
- przekierowania – kontrolowanie przepływu danych,
- head/tail – szybki podgląd fragmentów plików.
To jedne z najczęściej używanych narzędzi w Bashu. Ich opanowanie pozwoli Ci analizować logi, pracować z dużą liczbą plików i automatyzować pracę.