Informacja to potęga, ale tylko wtedy, gdy wiesz, jak ją znaleźć.
– Stara prawda z terminala
cat – Przeczytaj to na głos!
cat (od “concatenate”, czyli łączyć) to Twoja osobista czytelniczka logów. Domyślnie po prostu wypluwa zawartość pliku na ekran. Proste, efektywne, ale ma też parę asów w rękawie.
Podstawowe użycie: Powiedz mi, co jest w środku!
# Wyświetl zawartość pliku (klasyka!)
cat plik.txt
# Wyświetl zawartość kilku plików jednocześnie
cat plik1.txt plik2.txt
# Numeruj linie – przydatne do referencji, gdy krzyczysz do kolegi: "Błąd w linii 2137!"
cat -n plik.txt
# Pokaż znaki specjalne (np. taby jako ^I, entery jako $) – gdy szukasz niewidzialnych śmieci
cat -A plik.txt
# Połącz zawartość kilku plików i przekieruj do nowego pliku
cat plik1.txt plik2.txt > razem.txtPrzydatne opcje: Bez zbędnego bałaganu
# Bez pustych linii – bo kto lubi oglądać puste spacje?
cat -s plik.txt
# Pokaż taby jako ^I – czasami są mylące
cat -T plik.txtgrep – Znajdź igłę w stogu siana!
grep **(Global Regular Expression Print) to Twój najlepszy przyjaciel w poszukiwaniu wzorców tekstowych. Logi, pliki konfiguracyjne, kod – **grep to Twoja lupa detektywa.
Podstawowe użycie: Szukamy “error”!
# Szukaj słowa "error" w pliku. Proste, a jakie skuteczne!
grep "error" plik.log
# Ignoruj wielkość liter (i jak error, i jak ERROR, i jak ErRoR – wszystko się liczy!)
grep -i "error" plik.log
# Wyświetl linie BEZ wzorca (czyli pokaż mi wszystko, co NIE JEST błędem)
grep -v "error" plik.log
# Pokaż tylko samo dopasowanie (bez całej linii) – gdy interesuje Cię tylko to jedno słowo
grep -o "pattern" plik.txtWyrażenia regularne: Magia, która robi różnicę
Tutaj grep pokazuje pazury. Wyrażenia regularne (regex) to potężne wzorce, które pozwalają na bardzo precyzyjne wyszukiwanie.
# Znajdź linie zaczynające się od "error"
grep "^error" plik.log
# Znajdź linie kończące się na "error"
grep "error$" plik.log
# Dowolny znak: "err.r" znajdzie "error", "errpr", "errZr" itd.
grep "err.r" plik.log
# Klasy znaków: Znajdź linie zawierające jakąkolwiek cyfrę (0-9)
grep "[0-9]" plik.log
# Słowo granice: Szukaj "error" jako pełnego słowa, a nie np. "terror"
grep -w "error" plik.logKontekst: Po co mi ten błąd? A co było przed i po?
Sam błąd to jedno, ale czasem potrzebujesz wiedzieć, co wydarzyło się przed i po nim. grep Ci w tym pomoże.
# Pokaż n linii PRZED dopasowaniem
grep -B 3 "error" plik.log
# Pokaż n linii PO dopasowaniu
grep -A 3 "error" plik.log
# Pokaż n linii kontekstu WOKÓŁ dopasowania (zarówno przed, jak i po)
grep -C 3 "error" plik.logegrep i fgrep: Rodzina grep na specjalne okazje
-
egrep to skrót od grep -E. Używasz go, gdy potrzebujesz rozszerzonych wyrażeń regularnych, które oferują więcej funkcji (np. **** do OR). - fgrep to skrót od
grep -F. Używasz go, gdy szukasz dosłownych ciągów znaków, a nie wzorców regex. Jest szybszy, bo nie musi interpretować regexów.
# egrep – znajdź linie zawierające "error" LUB "warn" LUB "fatal"
egrep "error|warn|fatal" plik.log
# fgrep – znajdź dosłownie adres IP. Nie zinterpretuje kropek jako dowolnych znaków!
fgrep "192.168.1.1" plik.logPraktyczne przykłady: Zostań logowym detektywem!
Analiza logów: Gdzie jest problem?!
# Znajdź wszystkie błędy (ignorując wielkość liter) w logach systemowych
grep -i "error" /var/log/syslog
# Znajdź próby nieudanych logowań w auth.log, z kontekstem 5 linii
grep -C 5 "failed" /var/log/auth.log
# Zlicz, ile razy słowo "error" pojawiło się w logu (dobrze wiedzieć, jak często jest źle)
grep -c "error" plik.logWyciąganie danych: Wyrwij to, co najważniejsze!
# Wyciągnij wszystkie adresy IP z pliku access.log (używamy regex do IP)
grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' access.log
# Wyciągnij wszystkie adresy e-mail z pliku tekstowego
grep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' plik.txtŁączenie z innymi narzędziami: Siła tkwi w potokach (|)!
W Linuksie siła tkwi w łączeniu małych narzędzi w potężne potoki.
# Śledź na żywo logi i filtruj tylko błędy (super do monitoringu!)
tail -f plik.log | grep error
# Pokaż wszystkie procesy i znajdź tylko te związane z nginx
ps aux | grep nginx
# Znajdź wszystkie pliki .log w /var/log i przeszukaj je w poszukiwaniu "error"
find /var/log -name "*.log" -exec grep -l "error" {} \;Podsumowanie: Tekst pod Twoją kontrolą!
cat i grep to absolutne must-have w arsenale każdego, kto choć trochę grzebie w Linuksie. To one pozwalają Ci ogarnąć chaos tekstowy, który generuje system.
Kluczowe punkty do zapamiętania:
- cat wyświetla pliki, z opcjami numerowania linii i pokazywania znaków specjalnych.
- grep wyszukuje wzorce – to Twój osobisty Sherlock Holmes.
- egrep do złożonych regexów, fgrep do szybkich, dosłownych szukań.
-
Łącz cat, grep i inne komendy w potoki (** **) – wtedy dzieje się magia!
# Twój nowy zestaw do ekspresowej analizy logów:
grep -i "error" /var/log/syslog | tail -20Kolejny odcinek: cut + sort + uniq – idziemy na rekordy! Nauczymy się ciąć, sortować i pozbywać duplikatów. Zostań z nami!