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.txt

Przydatne 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.txt

grep – 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.txt

Wyraż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.log

Kontekst: 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.log

egrep 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.log

Praktyczne 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.log

Wycią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 -20

Kolejny odcinek: cut + sort + uniq – idziemy na rekordy! Nauczymy się ciąć, sortować i pozbywać duplikatów. Zostań z nami!