Jak wyświetlić katalogi w Linux: Kompletny przewodnik dla początkujących i administratorów systemów
Praca w Linux często przypomina nawigację po ogromnej bibliotece. Zamiast półek masz katalogi (foldery), a zamiast książek masz pliki. Niezależnie od tego, czy jesteś doświadczonym administratorem systemu, programistą czy ciekawym początkującym, opanowanie podstaw nawigacji po systemie plików jest niezbędne. Jedną z najważniejszych umiejętności fundamentalnych jest umiejętność efektywnego i dokładnego wyświetlania katalogów.
Ten przewodnik przeprowadzi Cię przez każdą praktyczną metodę wyświetlania katalogów w Linux, wyjaśni mocne i słabe strony każdego podejścia oraz pokaże dokładnie, kiedy używać którego narzędzia — w tym w skryptach i środowiskach serwerów produkcyjnych.
Dlaczego wyświetlanie katalogów ma znaczenie
Na komputerze osobistym możesz czasami przeglądać folder “Dokumenty” lub “Pobrane” za pośrednictwem interfejsu graficznego. Na serwerze Linux katalogi są jednak sercem niemal każdego zadania administracyjnego, które będziesz wykonywać:
- Administracja systemu: Szybko sprawdź, co znajduje się w
/etc/,/var/log/lub/usr/local/bin/. - Hosting internetowy: Zlokalizuj i zarządzaj folderami projektów w
/var/www/lub/home/. - Tworzenie oprogramowania: Zidentyfikuj katalogi kontroli wersji i środowiska, takie jak
.git/lub.venv/. - Audyt bezpieczeństwa: Potwierdź dokładnie, co jest zainstalowane, skonfigurowane i uruchomione w systemie.
- Automatyzacja i skrypty: Niezawodnie wylicz katalogi do użytku w skryptach powłoki i zadaniach cron.
Jeśli nie potrafisz efektywnie wyświetlać katalogów, zawsze będziesz się czuć zdezorientowany — szczególnie w zdalnym środowisku VPS Hosting, gdzie nie możesz polegać na graficznym menedżerze plików.
Metoda 1: Polecenie ls — szybkie i proste
Polecenie ls to domyślne narzędzie do wyświetlania zawartości katalogów. To pierwsze polecenie, które uczą się większość użytkowników Linux, i słusznie: jest szybkie, czytelne dla człowieka i dostępne w każdym systemie podobnym do Unix.
Podstawowe użycie
lsWyświetla wszystkie nieukryte pliki i katalogi w bieżącym katalogu roboczym.
Wyświetl tylko katalogi
ls -d */Oto co robi każda część:
-d— Mówilsaby nie schodzić do podkatalogów, ale wyświetlić same wpisy katalogów.*/— Wzorzec globu powłoki, który pasuje do wszystkich katalogów (i dowiązań symbolicznych do katalogów) w bieżącym folderze.
Wyświetl katalogi ze szczegółowymi informacjami
ls -ld */Dodanie -l daje Ci długi format listy, który zawiera:
- Uprawnienia do pliku
- Liczbę twardych dowiązań
- Właściciela i grupę
- Rozmiar pliku
- Znacznik czasu ostatniej modyfikacji
Przykładowe wyjście:
drwxr-xr-x 3 root root 4096 Jun 10 14:22 backups/
drwxr-xr-x 5 www-data www-data 4096 Jun 12 09:15 html/
drwxr-xr-x 2 deploy deploy 4096 Jun 11 18:03 logs/Ograniczenie: katalogi ukryte są wykluczone
Glob */ nie pasuje do katalogów ukrytych — tych, których nazwy zaczynają się od kropki (.), takich jak .git/, .ssh/ lub .config/. To ważne zastrzeżenie, szczególnie w środowiskach wrażliwych na bezpieczeństwo.
Kiedy używać ls -d */: Szybkie, interaktywne sprawdzenia, gdy potrzebujesz tylko widocznych katalogów i nie wymagasz niezawodności skryptów.
Metoda 2: Polecenie find — potężne i niezawodne
Polecenie find to wybór profesjonalistów do wyliczania katalogów. W przeciwieństwie do ls, jest przeznaczone do użytku programistycznego, obsługuje rekurencyjne przechodzenie, domyślnie zawiera katalogi ukryte i zachowuje się konsekwentnie na różnych dystrybucjach Linux i ustawieniach lokalizacji.
Wyświetl wszystkie katalogi rekurencyjnie
find . -type d.— Zacznij od bieżącego katalogu.-type d— Pasuj tylko do wpisów katalogów (nie pliki, dowiązania symboliczne ani inne typy).
Spowoduje to rekurencyjne wyświetlenie każdego katalogu na każdym poziomie głębokości poniżej Twojej bieżącej lokalizacji.
Wyświetl tylko katalogi najwyższego poziomu (metoda przenośna)
find . -mindepth 1 -maxdepth 1 -type d-mindepth 1— Wyklucza bieżący katalog (.) z wyników.-maxdepth 1— Zapobiega rekurencji poza bezpośrednimi dziećmi.
To jest najprzenośniejszy i najbardziej niezawodny sposób wyświetlania tylko bezpośrednich podkatalogów bieżącego folderu i działa identycznie w systemach GNU/Linux, macOS i BSD.
Alternatywa dla systemów GNU/Linux
Na większości nowoczesnych dystrybucji Linux — w tym tych działających na Serwerach Dedykowanych — możesz również użyć:
find . -maxdepth 1 -type dZwróć uwagę, że to będzie zawierać . w wynikach. Użyj -mindepth 1 razem z -maxdepth 1 aby wyczyścić to.
Dołącz katalogi ukryte
Ponieważ find nie opiera się na globach powłoki, automatycznie zawiera katalogi ukryte:
find . -mindepth 1 -maxdepth 1 -type dTo pokaże .git/, .ssh/, .config/ i wszelkie inne katalogi poprzedzone kropką obok widocznych.
Użyj find w skryptach
find to prawidłowe narzędzie do skryptów powłoki, ponieważ:
- Bezpiecznie obsługuje nazwy plików ze spacjami i znakami specjalnymi.
- Nie jest dotknięte ustawieniami lokalizacji lub konfiguracjami kolorów terminala.
- Tworzy spójne, parsowalne wyjście.
Przykład: Pętla po wszystkich katalogach najwyższego poziomu
find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
echo "Processing: $dir"
doneKiedy używać find: Zawsze, gdy potrzebujesz dołączonych katalogów ukrytych, wyników rekurencyjnych lub niezawodnego wyjścia do skryptów i automatyzacji.
Metoda 3: Polecenie tree — mapy katalogów wizualnych
Polecenie tree renderuje wizualną, hierarchiczną mapę struktury katalogów. Nie jest instalowane domyślnie na wszystkich dystrybucjach, ale jest niezwykle przydatne do dokumentacji, wdrażania i zrozumienia złożonych układów projektów.
Zainstaluj tree
Debian/Ubuntu:
sudo apt install treeCentOS/RHEL/AlmaLinux:
sudo yum install treeWyświetl tylko katalogi (bez plików)
tree -dOgranicz głębokość, aby uniknąć przytłaczającego wyjścia
tree -d -L 2-d— Pokaż tylko katalogi.-L 2— Ogranicz wyświetlanie do 2 poziomów głębokie.
Przykładowe wyjście:
.
├── backups
│ └── daily
├── html
│ ├── assets
│ └── uploads
└── logsDołącz katalogi ukryte
tree -d -aKiedy używać tree: Wizualizacja struktur projektów, pisanie dokumentacji lub eksploracja nieznanego układu serwera po raz pierwszy.
Metoda 4: Dlaczego powinieneś unikać ls -l | grep "^d"
Czasami napotkasz ten wzorzec sugerowany online:
ls -l | grep "^d"Pomysł polega na filtrowaniu długiego wyjścia listy ls w celu wyświetlenia tylko linii zaczynających się od d — co wskazuje katalog. Chociaż to wygląda sprytnie, jest fundamentalnie kruche i powinno być unikane w każdym poważnym kontekście:
| Problem | Wyjaśnienie |
|---|---|
| Wrażliwość na lokalizację | Niektóre ustawienia lokalizacji lub konfiguracje terminala zmieniają format wyjścia ls -l, łamiąc wzorzec grep. |
| Kody kolorów | Jeśli ls wyświetla kody ucieczki ANSI, wzorzec ^d może nie pasować. |
| Katalogi ukryte | Nie są pokazane, tak jak w ls -d */. |
| Dowiązania symboliczne | Dowiązania symboliczne wskazujące na katalogi pokazują się jako l, a nie d, więc są po cichu wykluczone. |
| Niezawodność skryptów | Parsowanie wyjścia ls w skryptach jest wyraźnie odradzane w najlepszych praktykach skryptów powłoki. |
Użyj find zamiast tego. Jest przeznaczony do tego zadania i unika wszystkich powyższych pułapek.
Szybki przewodnik: wybór właściwej metody
| Cel | Najlepsze polecenie |
|---|---|
| Szybkie interaktywne sprawdzenie (tylko widoczne katalogi) | ls -d */ |
| Szczegółowa lista z uprawnieniami | ls -ld */ |
| Katalogi najwyższego poziomu, w tym ukryte | find . -mindepth 1 -maxdepth 1 -type d |
| Wszystkie katalogi rekurencyjnie | find . -type d |
| Wizualna struktura drzewa | tree -d |
| Użycie w skrypcie powłoki | find . -mindepth 1 -maxdepth 1 -type d |
Najlepsze praktyki dla środowisk serwerów produkcyjnych
Pracując na serwerze na żywo — niezależnie od tego, czy jest to konto Hosting Współdzielony czy w pełni zarządzany VPS — pamiętaj o tych zasadach:
- Zawsze sprawdzaj katalogi ukryte podczas audytów bezpieczeństwa. Katalogi takie jak
.ssh/,.git/,.env/i.config/często zawierają poufne poświadczenia, klucze i pliki konfiguracyjne. Użyjfindz-mindepth 1aby upewnić się, że pojawiają się w Twoim wyjściu.
- Używaj
findwe wszystkich skryptach,
