Windows ma osobne litery dysków (C:, D:), a Linux — jedno drzewo z korzeniem /, do którego „podpina się” wszystko inne. Ułożenie tego drzewa jest dość stałe: programy, ustawienia, dane użytkowników i dzienniki mają swoje katalogi. Znajomość tego układu pozwala szybko znaleźć konfigurację albo logi. Na lekcji uczniowie badają model takiego drzewa zbudowany w katalogu tymczasowym.
Scenariusz jest przeznaczony na 45 minut dla klasy znającej podstawowe polecenia — na przykład po lekcji o poleceniach Linux. Model w skrypcie jest uproszczony: prawdziwy system ma więcej katalogów i inne zawartości.
Przygotowanie stanowisk
Potrzebny jest terminal z powłoką bash (Ubuntu, WSL lub maszyna wirtualna). Ćwiczenia wykonuj na zwykłym koncie, bez sudo. Skrypt rozwiazanie.sh z pakietu odtwarza całą lekcję w katalogu tymczasowym (mktemp -d) i usuwa tylko ten katalog — nie zmienia Twoich plików; uruchamiasz go poleceniem bash rozwiazanie.sh. Ćwiczenia z karty pracy wykonaj ręcznie w terminalu, w osobnym katalogu ćwiczeniowym.
Cele i plan lekcji
Po zajęciach uczeń potrafi:
- wskazać zadania najważniejszych katalogów:
/bin,/etc,/home,/tmp,/usr,/var; - wyświetlić drzewo katalogów poleceniem
find . -type d; - znaleźć pliki według typu i nazwy (
find -type f,-name); - odróżnić katalog domowy użytkownika od katalogów systemowych.
| Czas | Praca na lekcji |
|---|---|
| 0–5 min | Problem: gdzie system trzyma swoje pliki? |
| 5–15 min | Korzeń i najważniejsze katalogi |
| 15–22 min | ls i find na modelu drzewa |
| 22–37 min | Trzy zadania |
| 37–42 min | Porównanie z własnym systemem (ls /) |
| 42–45 min | Pytania kontrolne |
Najważniejsze katalogi
| Katalog | Zawartość |
|---|---|
/ | korzeń — początek całego drzewa |
/bin, /usr/bin | programy (polecenia) dostępne dla wszystkich |
/etc | pliki konfiguracyjne systemu (np. hostname, passwd) |
/home | katalogi domowe użytkowników (/home/ola) |
/var | dane zmienne: dzienniki (/var/log), kolejki, bazy |
/tmp | pliki tymczasowe (czyszczone przy restarcie lub okresowo) |
/usr | programy i biblioteki zainstalowane w systemie, dokumentacja (/usr/share) |
W modelu z lekcji drzewo ma korzeń system (zamiast /) i zawiera: bin, etc (pliki hostname, passwd), home (katalogi ola i jan), tmp, var/log (plik syslog) oraz usr (podkatalogi bin i share). Katalog domowy użytkownika to miejsce, w którym ma on prawo tworzyć pliki; w pozostałych katalogach zwykle może je tylko czytać.
Polecenia
ls— zawartość bieżącego katalogu;ls -R— rekurencyjnie;find . -type d— wszystkie katalogi pod bieżącym;find . -type f— wszystkie pliki;find home -name "*.txt"— pliki o nazwie pasującej do wzorca w kataloguhome(wzorzec w cudzysłowie);... | sort— porządkuje wynik (kolejność zfindnie jest gwarantowana);... | wc -l— liczy wiersze.
Zadania
Zadanie 1. Drzewo. W katalogu system wypisz wszystkie katalogi (find . -type d, posortowane).
Zadanie 2. Zawartość. Wypisz zawartość katalogu system, a potem katalogów home i etc.
Zadanie 3. Pliki. Wypisz wszystkie zwykłe pliki (posortowane), policz je i znajdź w home pliki .txt.
Dla chętnych: zlokalizuj w prawdziwym systemie dziennik systemowy (ls /var/log) i plik z nazwą komputera (cat /etc/hostname).
Rozwiązanie i wyniki
set -e
TMP=$(mktemp -d)
cd "$TMP"
mkdir -p system/{bin,etc,home/{ola,jan},tmp,var/log,usr/{bin,share}}
touch system/etc/hostname system/etc/passwd system/var/log/syslog
touch system/home/ola/notatki.txt system/home/jan/zdjecie.jpg system/usr/bin/python3
cd system
echo "--- Zadanie 1"
find . -type d | sort
echo "--- Zadanie 2"
ls
ls home
ls etc
echo "--- Zadanie 3"
find . -type f | sort
find . -type f | wc -l
find home -name "*.txt"
cd /
rm -r "$TMP"
Skrypt rozwiazanie.sh z pakietu wykonuje te polecenia w katalogu tymczasowym i wypisuje:
--- Zadanie 1
.
./bin
./etc
./home
./home/jan
./home/ola
./tmp
./usr
./usr/bin
./usr/share
./var
./var/log
--- Zadanie 2
bin
etc
home
tmp
usr
var
jan
ola
hostname
passwd
--- Zadanie 3
./etc/hostname
./etc/passwd
./home/jan/zdjecie.jpg
./home/ola/notatki.txt
./usr/bin/python3
./var/log/syslog
6
home/ola/notatki.txt
Typowe błędy
| Objaw | Co sprawdzić |
|---|---|
ls: cannot access | Katalog nie istnieje albo jesteś w innym miejscu (sprawdź pwd). |
Wynik find w różnej kolejności | Kolejność zależy od systemu plików; użyj sort. |
find wypisuje także pliki | Brak -type d (katalogi) lub -type f (pliki). |
Wzorzec *.txt rozwija się przed find | Wzorzec w -name zapisz w cudzysłowie. |
Nie możesz zapisać pliku w /etc | To katalog systemowy; zwykły użytkownik zapisuje w katalogu domowym (~) lub w /tmp. |
Pomylenie /home/ola z ~ | ~ oznacza katalog domowy bieżącego użytkownika. |
Pytania kontrolne i punktacja
- W którym katalogu szukasz plików konfiguracyjnych systemu?
- Gdzie zwykły użytkownik może zapisywać swoje pliki?
- Co robi
find . -type d?
Odpowiedzi: W /etc. W swoim katalogu domowym (/home/nazwa, czyli ~) oraz w /tmp. Wypisuje wszystkie katalogi znajdujące się pod bieżącym katalogiem.
Proponowana punktacja (razem 10 punktów): zadanie 1 — find . -type d z sort 3 pkt; zadanie 2 — trzy polecenia ls 2 pkt; zadanie 3 — lista plików, liczba i wzorzec .txt po 1 pkt; odpowiedzi o katalogach 2 pkt. Zadanie dla chętnych nie jest wymagane do pełnej oceny.
Materiały do pobrania
Rozpakuj ZIP przed otwarciem plików. Materiały są dostępne bez logowania; publiczne rozwiązanie służy nauce i samodzielnemu sprawdzeniu, a nie poufnemu sprawdzianowi.
Co dalej?
Następny krok to poruszanie się po drzewie (pwd, cd), uprawnienia plików i dowiązania. Ten materiał rozwija dział o systemie plików w kursie Linux w TablicaPro, gdzie znajdziesz prezentacje, ćwiczenia i testy do prowadzenia lekcji.
Źródła techniczne: hierarchia systemu plików (FHS) w Wikipedii oraz podręcznik GNU findutils. Zobacz też lekcję o find.
Poprowadź kolejne lekcje Linux
Pełny kurs: prezentacje, ćwiczenia i testy do pracy z klasą.
Kup dostęp do kursu Linux →