11/07/2025
Polecenie ls jest jednym z fundamentów pracy w systemach Linux i UNIX. To proste, ale niezwykle potężne narzędzie, które pozwala na listowanie zawartości katalogów. Znajomość polecenia ls i jego opcji jest kluczowa dla każdego, kto pracuje z linią komend. W tym artykule zgłębimy tajniki polecenia ls, zaczynając od jego podstawowej funkcjonalności, poprzez popularne opcje, aż po zaawansowane warianty takie jak ls *, ls . Zrozumiemy różnice w zachowaniu polecenia w różnych powłokach, takich jak Bash i Zsh, oraz nauczymy się efektywnie wykorzystywać ls do nawigacji i zarządzania plikami w systemie Linux.

Podstawowe użycie polecenia ls
Najprostsza forma polecenia ls, wpisana bez żadnych argumentów, wyświetla listę plików i katalogów znajdujących się w bieżącym katalogu roboczym. Jest to szybki sposób na sprawdzenie, co znajduje się w katalogu, w którym aktualnie pracujemy.
$ ls dokumenty/ zdjęcia/ linki_zewnętrzne/ kod.py readme.md Jak widać na powyższym przykładzie, polecenie ls wypisuje nazwy plików i katalogów. Domyślnie, katalogi są oznaczane ukośnikiem na końcu nazwy, co ułatwia ich odróżnienie od plików. Warto zauważyć, że podstawowe polecenie ls wyświetla tylko sam link symboliczny, a nie zawartość katalogu, do którego link prowadzi.
Popularne opcje polecenia ls
Polecenie ls oferuje szeroki wachlarz opcji, które pozwalają dostosować sposób wyświetlania informacji. Poniżej przedstawiamy kilka najczęściej używanych opcji:
Opcja -l (long listing)
Opcja -l (ang. long listing) wyświetla szczegółowe informacje o plikach i katalogach, takie jak uprawnienia, liczba dowiązań twardych, właściciel, grupa, rozmiar pliku, data ostatniej modyfikacji i nazwa. Jest to jedna z najczęściej używanych opcji, gdy potrzebujemy więcej informacji niż tylko nazwy plików.
$ ls -l drwxr-xr-x 2 użytkownik użytkownik 4096 Sie 24 12:00 dokumenty lrwxrwxrwx 1 użytkownik użytkownik 20 Sie 24 11:55 linki_zewnętrzne -> /ścieżka_zewnętrzna/dane/ drwxr-xr-x 2 użytkownik użytkownik 4096 Sie 24 12:00 zdjęcia -rw-r--r-- 1 użytkownik użytkownik 2048 Sie 25 15:00 kod.py -rw-r--r-- 1 użytkownik użytkownik 1024 Sie 24 14:00 readme.md W powyższym wyjściu: * Pierwsza kolumna to uprawnienia do pliku (np. drwxr-xr-x). Litera 'd' na początku oznacza katalog, '-' plik, a 'l' link symboliczny. * Druga kolumna to liczba dowiązań twardych. * Trzecia i czwarta kolumna to właściciel i grupa pliku. * Piąta kolumna to rozmiar pliku w bajtach. * Szósta, siódma i ósma kolumna to data i czas ostatniej modyfikacji. * Dziewiąta kolumna to nazwa pliku lub katalogu.
Opcja -lh (long listing human-readable)
Opcja -lh łączy funkcjonalność opcji -l z przedstawieniem rozmiarów plików w bardziej czytelnej formie, np. w kilobajtach (K), megabajtach (M) czy gigabajtach (G). Jest to szczególnie przydatne przy wyświetlaniu plików o dużych rozmiarach.
$ ls -lh drwxr-xr-x 2 użytkownik użytkownik 4.0K Sie 24 12:00 dokumenty lrwxrwxrwx 1 użytkownik użytkownik 20 Sie 24 11:55 linki_zewnętrzne -> /ścieżka_zewnętrzna/dane/ drwxr-xr-x 2 użytkownik użytkownik 4.0K Sie 24 12:00 zdjęcia -rw-r--r-- 1 użytkownik użytkownik 2.0K Sie 25 15:00 kod.py -rw-r--r-- 1 użytkownik użytkownik 1.0K Sie 24 14:00 readme.md Zauważ, że rozmiary plików są teraz przedstawione w kilobajtach (4.0K, 2.0K, 1.0K), co jest znacznie bardziej intuicyjne niż rozmiary w bajtach.
Opcja -t (sort by time)
Opcja -t sortuje listę plików i katalogów według czasu modyfikacji, wyświetlając najnowsze pliki na początku listy. Jest to przydatne, gdy chcemy szybko znaleźć ostatnio modyfikowane pliki.

$ ls -t kod.py readme.md zdjęcia/ dokumenty/ linki_zewnętrzne/ W tym przykładzie, pliki kod.py i readme.md, które były ostatnio modyfikowane, znajdują się na początku listy.
Opcja -F (classify)
Opcja -F dodaje znak na końcu nazwy każdego elementu, wskazując jego typ. Katalogi są oznaczane ukośnikiem (/), linki symboliczne znakiem małpy (@), pliki wykonywalne gwiazdką (*), i tak dalej. Ułatwia to szybkie rozpoznawanie typów plików.
$ ls -F dokumenty/ linki_zewnętrzne@ zdjęcia/ kod.py* W powyższym przykładzie, dokumenty/ i zdjęcia/ to katalogi, linki_zewnętrzne@ to link symboliczny, a kod.py* to plik wykonywalny.
Opcja -u (access time)
Opcja -u powoduje, że ls sortuje i wyświetla elementy według czasu dostępu, a nie czasu modyfikacji. Czas dostępu zmienia się za każdym razem, gdy plik jest odczytywany. W połączeniu z opcją -t, wyświetla pliki posortowane od najdawniej używanych.
$ ls -u -t readme.md dokumenty/ zdjęcia/ linki_zewnętrzne/ kod.py Polecenie ls *
Polecenie ls * wykorzystuje symbol wieloznaczny gwiazdki (*). Gwiazdka w powłokach UNIX i Linux pasuje do dowolnej liczby znaków w nazwach plików i katalogów. W efekcie, ls * rozwija się do listy wszystkich plików i katalogów w bieżącym katalogu roboczym.
Zachowanie ls * jest podobne w powłokach Bash i Zsh dzięki mechanizmowi globbingu. ls * wyświetla wszystkie widoczne pliki i katalogi w bieżącym katalogu, ale nie obejmuje katalogów zaczynających się od kropki (plików ukrytych). W przeciwieństwie do zwykłego ls, ls * wyświetla zawartość katalogu, do którego prowadzi link symboliczny.
$ ls * kod.py dokumenty/ linki_zewnętrzne/ -> /ścieżka_zewnętrzna/dane/ zdjęcia/ readme.md Polecenie ls
Użycie podwójnej gwiazdki () w poleceniu ls również jest interpretowane przez mechanizm globbingu. Pierwsza gwiazdka pasuje do dowolnego pliku lub katalogu, a druga gwiazdka umożliwia rekursywne przeszukiwanie, wchodząc w podkatalogi i niżej. Pozwala to na eksplorację całego drzewa katalogów począwszy od bieżącego katalogu, o ile powłoka obsługuje tę funkcję.

ls w Bash
W Bash, domyślnie, polecenie ls zachowuje się tak samo jak ls *, wyświetlając wszystkie pliki i katalogi w bieżącym katalogu, ale nie wykonując rekursywnego przeszukiwania.
$ ls ** kod.py dokumenty/ linki_zewnętrzne/ -> /ścieżka_zewnętrzna/dane/ zdjęcia/ readme.md Innymi słowy, ls generuje taki sam wynik jak prostsze polecenie ls *.
ls w Zsh
W bardziej zaawansowanych powłokach, takich jak Zsh, polecenie ls nie tylko wyświetla pliki i katalogi w bieżącym katalogu, ale także rekursywnie listuje pliki w podkatalogach, katalogach poniżej nich i tak dalej.
$ ls kod.py dokumenty/report.docx dokumenty/notatki.txt linki_zewnętrzne/ -> /ścieżka_zewnętrzna/dane/ zdjęcia/rodzinne.jpg zdjęcia/wakacje/plaża.jpg zdjęcia/wakacje/góry.jpg readme.md Podsumowując, ls ia rekursywne listowanie plików i katalogów w zaawansowanych powłokach takich jak Zsh. Nadal jednak nie pokazuje podkatalogów linku symbolicznego.
Polecenie ls *
Polecenie ls *yć początkowo nieco zagadkowe, ponieważ dodatkowe gwiazdki (*) w tradycyjnych wzorcach globbingu w powłokach takich jak Bash nie oferują żadnej dodatkowej specyficzności.
Bash
W Bash nie ma natywnego rozróżnienia między *, czy * pod względem dopasowywania wzorców. Wszystkie są traktowane jako symbol wieloznaczny, który pasuje do dowolnego ciągu znaków w nazwach plików lub katalogów na bieżącym poziomie katalogu.
Zatem, użycie ls * w Bash wyświetla wszystkie pliki i katalogi w bieżącym katalogu, bez rekursywnego przeszukiwania.

$ ls *** kod.py dokumenty/ linki_zewnętrzne/ -> /ścieżka_zewnętrzna/dane/ zdjęcia/ readme.md Jednak inne powłoki mogą ponownie zachowywać się inaczej.
Zsh
Gdy uruchomisz ls * w Zsh, listuje pliki i katalogi rekursywnie z bieżącego katalogu, podobnie jak ls , ale z dodatkową możliwością podążania za linkami symbolicznymi do katalogów i wyświetlania ich zawartości. Jak wspomniano wcześniej, link symboliczny to plik, który wskazuje na inny plik lub katalog, służąc jako odniesienie lub skrót do jego celu.
$ ls *** kod.py dokumenty/ dokumenty/report.docx dokumenty/notatki.txt linki_zewnętrzne/ -> /ścieżka_zewnętrzna/dane/ linki_zewnętrzne/zewnętrzny1.txt linki_zewnętrzne/zewnętrzny2.doc zdjęcia/ zdjęcia/rodzinne.jpg zdjęcia/wakacje/ zdjęcia/wakacje/plaża.jpg zdjęcia/wakacje/góry.jpg readme.md Co istotne, w przeciwieństwie do wszystkich poprzednich poleceń, podczas listowania zawartości linku symbolicznego linki_zewnętrzne za pomocą ls *** w powłoce Zsh, ujawnia ono pliki, do których link prowadzi: zewnętrzny1.txt i zewnętrzny2.doc.
Polecenie ls [tekst]*
Wykonując polecenie ls [tekst]*, instruujemy system, aby wyświetlił elementy w bieżącym katalogu, których nazwy zaczynają się od ciągu znaków [tekst]. Ważne jest, aby tekst nie zawierał żadnych ukośników, ponieważ spowodowałoby to jego interpretację jako ścieżki.
To polecenie pozwala nam szybko filtrować i wyświetlać pliki i katalogi na podstawie wspólnego prefiksu.
$ ls dok* dokumenty/ Polecenie ls [tekst]* konkretnie celuje w elementy nazwane [tekst] i wyświetla wszystkie obiekty w bieżącym katalogu, które pasują do tego filtra.
Podsumowanie
W tym artykule omówiliśmy polecenie ls, jego warianty (ls *, ls ), wraz z formatem ls [katalog]* w systemach UNIX i Linux. Chociaż zachowanie wariantu z gwiazdką jest spójne w Bash, istnieją odrębne funkcje rekursywne w Zsh dla poleceń ls i ls *. Dodatkowo, rzuciliśmy światło na kilka podstawowych opcji, które rozszerzają możliwości polecenia ls. Dzięki tej wiedzy można sprawniej poruszać się po katalogach, szczególnie przy przechodzeniu między powłokami Bash i Zsh. Znajomość polecenia ls i jego wariantów jest niezbędna dla efektywnej pracy w środowisku Linux i pozwala na szybkie i sprawne zarządzanie plikami i katalogami z poziomu linii komend.
Najczęściej zadawane pytania (FAQ)
- Co robi polecenie ls bez żadnych opcji?
- Polecenie ls bez opcji wyświetla listę plików i katalogów w bieżącym katalogu roboczym.
- Jaka jest różnica między ls * a ls?
- ls wyświetla tylko zawartość bieżącego katalogu. ls * również wyświetla zawartość bieżącego katalogu, ale dodatkowo rozwija linki symboliczne do katalogów i wyświetla ich zawartość (w zależności od powłoki). ls * nie wyświetla plików ukrytych (zaczynających się od kropki), podczas gdy zwykłe ls również ich nie wyświetla, chyba że użyto opcji -a.
- Czym różni się ls i Zsh?
- W Bash ls działa tak samo jak ls *, wyświetlając zawartość bieżącego katalogu. W Zsh ls ** wykonuje rekursywne listowanie, wyświetlając zawartość bieżącego katalogu i wszystkich podkatalogów.
- Do czego służy opcja -l polecenia ls?
- Opcja -l (long listing) wyświetla szczegółowe informacje o plikach i katalogach, takie jak uprawnienia, właściciel, rozmiar, data modyfikacji itp.
- Jak wyświetlić listę plików posortowanych według daty modyfikacji?
- Użyj polecenia ls -t. Pliki zostaną posortowane od najnowszych do najstarszych.
Jeśli chcesz poznać inne artykuły podobne do Polecenie ls w Linuxie: Kompletny przewodnik, możesz odwiedzić kategorię Rachunkowość.
