# Obsługa przegladania plików : CAT, HEAD, TAIL

**1. `cat` – wyświetlanie zawartości pliku**

```bash
cat plik.txt
```

Wyświetla całą zawartość pliku `plik.txt` na standardowe wyjście (terminal). Używany też do łączenia plików i przekierowania ich zawartości.

**Przykład łączenia plików i zapisu do nowego pliku:**

```bash
cat plik1.txt plik2.txt > polaczony_plik.txt
```

---

**2. `head` – wyświetlanie początkowych linii pliku**

```bash
head plik.txt
```

Wyświetla domyślnie pierwsze 10 linii pliku `plik.txt`.

**Zmiana liczby wyświetlanych linii:**

```bash
head -n 20 plik.txt
```

Wyświetla pierwsze 20 linii pliku.

---

**3. `tail` – wyświetlanie końcowych linii pliku**

```bash
tail plik.txt
```

Wyświetla ostatnie 10 linii pliku.

**Śledzenie zmieniającego się pliku (np. pliku logu):**

```bash
tail -f /var/log/syslog
```

Na żywo wyświetla kolejne dodawane linie do pliku (przydatne przy monitorowaniu logów).

**Wyświetlenie określonej liczby ostatnich linii:**

```bash
tail -n 50 plik.log
```

Ostatnie 50 linii pliku `plik.log`.

---

**Praktyczne zastosowania połączeń narzędzi**

Wyświetlenie ostatnich 100 linii z monitorowaniem na żywo (analogicznie jak `tail -f`):

```bash
tail -n 100 -f /var/log/system.log
```

Wyświetlenie pierwszych 50 linii wyszukanego pliku, np. połączone z `grep`:

```bash
grep "error" /var/log/syslog | head -n 50
```

**Parametry komendy ich wykorzystanie:**

```bash
-n (–lines=ILE)
```

Opcja pozwala określić liczbę wyświetlanych linii od końca pliku.

```bash
tail -n 20 plik.txt
```

Wyświetli ostatnie 20 linii pliku `plik.txt`. Domyślnie jest to 10 linii, jeśli nie podamy opcji.

<p class="callout info">-f (–follow\[=OPTION\])</p>

Opcja stosowana do śledzenia pliku na bieżąco. Wypisuje najpierw ostatnie linie, potem wyświetla na żywo nowe linie dopisywane do pliku.

```
tail -f /var/log/syslog
```

Przydatne do monitorowania plików logów w czasie rzeczywistym.

<p class="callout info">-c (–bytes=ILE)</p>

Wypisuje z pliku zamiast linii określoną liczbę ostatnich bajtów.

```
tail -c 100 plik.txt
```

Wyświetla ostatnie 100 bajtów pliku. Jeden bajt to jeden znak lub nowa linia.

<p class="callout info">-q (–quiet, –silent)</p>

Przy wyświetlaniu wielu plików nie wyświetla ich nazw nad zawartością.

```
tail -q -n 10 plik1.txt plik2.txt
```

<p class="callout info">-v (–verbose)</p>

Zawsze wyświetla nazwę pliku nad jego zawartością nawet przy jednym pliku.

##### Inne przydatne opcje

- `--retry` – wielokrotna próba otwarcia pliku, przydatne w monitorowaniu.
- `--pid=PID` – automatyczne zatrzymanie działania gdy zakończy się proces o podanym PID.
- `-s N` – opóźnienie między odczytami gdy używamy `-f`, domyślnie 1 sekunda.

**Przykład kompleksowy:**

```bash
tail -n 50 -f -s 2 /var/log/app.log
```

Wyświetla ostatnie 50 linii pliku `app.log`, a następnie śledzi plik, odświeżając co 2 sekundy.

**Użycie w potoku i z filtrowaniem:**

```bash
tail -f /var/log/app.log | grep --color "ERROR"
```

Monitoruje na żywo plik logów i podświetla słowo "ERROR".