Podstawy Linux #5: Nawigacja i system plików

Po zalogowaniu się na serwer Linux widzisz terminal — czarny ekran z migającym kursorem. To Twoje główne narzędzie pracy. W tej lekcji nauczysz się poruszać po systemie plików, tworzyć i zarządzać plikami, oraz czytać ich zawartość.
Gdzie jestem? Nawigacja po katalogach
pwd — wyświetl bieżący katalog
pwd
Wynik np. /home/roman — to Twój katalog domowy.
ls — lista plików i katalogów
ls # podstawowa lista
ls -l # szczegóły (uprawnienia, rozmiar, data)
ls -la # jak wyżej + pliki ukryte (zaczynające się od kropki)
ls -lh # rozmiary w czytelnym formacie (KB, MB)
📋 Przykład
ls -la /etc/nginx/
Pokaże wszystkie pliki konfiguracyjne Nginx, łącznie z ukrytymi.
cd — zmiana katalogu
cd /var/log # przejdź do katalogu /var/log
cd .. # katalog nadrzędny (o jeden poziom w górę)
cd ~ # katalog domowy użytkownika
cd - # powrót do poprzedniego katalogu
cd # to samo co cd ~ (do katalogu domowego)
💡 Podpowiedź
Klawisz Tab automatycznie uzupełnia nazwy katalogów i plików. Naciśnij Tab dwa razy, żeby zobaczyć dostępne opcje.
Ścieżki absolutne vs względne
cd /var/log/nginx # ścieżka absolutna (od korzenia /)
cd log/nginx # ścieżka względna (od bieżącego katalogu)
💡 Zasada
Ścieżka zaczynająca się od / jest absolutna. Bez / na początku — względna.
Tworzenie plików i katalogów
touch — utwórz pusty plik
touch config.yml
touch plik1.txt plik2.txt # kilka plików naraz
mkdir — utwórz katalog
mkdir projekty
mkdir -p projekty/klient-a/backupy # tworzy całą strukturę
📋 Scenariusz: Przygotowanie struktury projektu
mkdir -p /opt/projekty/moj-projekt/{config,data,logs,backups}
ls /opt/projekty/moj-projekt/
Nawiasy klamrowe {} to skrót — bash tworzy osobny katalog dla każdego elementu oddzielonego przecinkiem. Wynik: backups config data logs — cztery katalogi stworzone jednym poleceniem.
Kopiowanie, przenoszenie, usuwanie
cp — kopiuj
cp plik.txt kopia.txt # kopia pliku
cp plik.txt /tmp/ # kopia do innego katalogu
cp -r katalog/ kopia-katalogu/ # kopia katalogu (rekurencyjnie)
mv — przenieś / zmień nazwę
mv stara-nazwa.txt nowa-nazwa.txt # zmiana nazwy
mv plik.txt /opt/projekty/ # przeniesienie
rm — usuń
rm plik.txt # usuń plik
rm -r katalog/ # usuń katalog z zawartością
rm -rf katalog/ # usuń bez pytania (ostrożnie!)
⚠️ Uwaga
rm -rf nie pyta o potwierdzenie i nie ma kosza. Usunięte pliki są nie do odzyskania. Zawsze sprawdź dwa razy co usuwasz, szczególnie przy użyciu zmiennych w ścieżce.
📋 Scenariusz: Backup przed usunięciem
cp -r /opt/projekty/stary-projekt /opt/backups/stary-projekt-$(date +%Y%m%d)
# $(date +%Y%m%d) — bash wykonuje komendę w $() i wstawia wynik, np. "20260212"
rm -rf /opt/projekty/stary-projekt
Najpierw backup z datą w nazwie, potem usunięcie.
Wyświetlanie zawartości plików
cat — wyświetl cały plik
cat /etc/hostname
less — przeglądanie z przewijaniem
less /var/log/syslog
Nawigacja w less: spacja = strona w dół, b = strona w górę, q = wyjście, / = wyszukiwanie.
head i tail — początek i koniec pliku
head -n 20 plik.txt # pierwsze 20 linii
tail -n 20 plik.txt # ostatnie 20 linii
tail -f /var/log/syslog # śledzenie na żywo (CTRL+C żeby przerwać)
📋 Scenariusz: Monitoring logów
tail -f /var/log/nginx/access.log
Widzisz na żywo każde wejście na Twoją stronę. Przydatne przy debugowaniu.
Przekierowania i potoki
Zapisywanie do pliku
echo "Hello" > plik.txt # nadpisuje plik
echo "World" >> plik.txt # dopisuje na końcu
Potok | (pipe)
Łączy wyjście jednej komendy z wejściem następnej:
ls -la /etc | less # lista plików z przewijaniem
cat /var/log/syslog | grep "error" # szukaj "error" w logach
ps aux | grep nginx # znajdź procesy Nginx
Łączenie komend
mkdir backup && cp dane.txt backup/ # && = wykonaj następne JEŚLI poprzednie się udało
komenda1 || komenda2 # || = wykonaj następne JEŚLI poprzednie się NIE udało
komenda1 ; komenda2 # ; = wykonaj następne NIEZALEŻNIE od wyniku
📋 Scenariusz: Szybki backup z potwierdzeniem
cp -r /opt/app/data /opt/backups/data-$(date +%Y%m%d) && echo "Backup OK" || echo "Backup FAILED"
Podsumowanie
| Komenda | Co robi |
|---|---|
pwd |
Gdzie jestem |
ls -la |
Co tu jest |
cd |
Idź do |
mkdir -p |
Stwórz katalog(i) |
cp -r |
Kopiuj |
mv |
Przenieś/zmień nazwę |
rm -r |
Usuń |
cat / less |
Czytaj plik |
tail -f |
Śledź na żywo |
> / >> / \| |
Przekieruj / potok |






