Artur Pyszczuk's blog...

"'less' is more, but more 'more' than 'more' is, so 'more' is less 'less', so use more 'less' if you want less 'more'"
Slackbook, Chapter 10 Handling Files and Directories
/home/linux/commands/ls/

ls - Wyświetlenie zawartości katalogu

W konsoli, aby wyświetlić zawartość katalogu trzeba użyć jednego z kilku dostępnych poleceń, nie mniej jednak polecenie ls jest chyba najbardziej popularnym. W tym miejscu opiszę w jaki sposób korzysta się z podstawowego polecenia, oraz polecenia z różnymi parametrami.

Ogólna składnia polecenia prezentuje się następująco:

$ ls [opcje] [plik]

Przyjęło się tak, że nawiasy kwadratowe oznaczają coś, co nie jest wymagane. A więc polecenie ls nie musi przyjmować żadnych opcji, ani argumentów w postaci plików/katalogów. A więc w najprostszej postaci, do wyświetlenia zawartości bieżacego katalogu, użyjemy polecenia ls bez żadnych parametrów. Jak pokazano na rys. 1.

ls - Wyświetlenie zawartości katalogu
Rys. 1. Polecenie ls


W gruncie rzeczy patrząc na rysunek 1, nie możemy za dużo powiedzieć o tym z jakimi plikami mamy do czynienia (użytkownicy, którzy trochę używają już konsoli będą wiedzieć, które to pliki, które katalogi, a które to dowiązanie symboliczne).

Aby dowiedzieć się więcej informacji o zawartości katalogu przychodzi z pomocą opcja -l. Rysunek 2. Zawiera więcej informacji na temat zawartości katalogu, o których zaraz powiem.

ls - Wyświetlenie zawartości katalogu
Rys. 2. Polecenie ls -l


Na rysunku 3 pokazane zostało polecenie ls, z opcją -l, oraz konkretnym plikiem.

ls - Wyświetlenie zawartości katalogu
Rys. 3. Polecenie ls -l plik1

Gdzie:

Jak już zauważyłeś, oba w/w polecenia nie pokazują plików ukrytych (tj. zaczynających się od kropki). Tak więc, aby zobaczyć ukryte pliki, które znajdują się w katalogu należy użyć polecenia ls, z odpowiednią opcją. Opcje te, to -a, -A. Różnica pomiędzy nimi pokazana została na rysunku 4.

ls - Wyświetlenie zawartości katalogu
Rys. 4. Polecenie ls -a, ls -A

Jak widać, polecenie ls -a, wyświetla zawartość katalogu, wraz z wszystkimi ukrytymi plikami, oraz pokazuje "." (kropka), oraz ".." (dwie kropki) co odpowiednio oznacza katalog bieżący, oraz katalog nadrzędny. Polecenie ls -A, wyświetla zawartość katalogu wraz z plikami ukrytymi, lecz pomija "kropki".

Kopie zapasowe plików, zapisywane sa pod tą samą nazwą co edytowany plik + znak tyldy na samym końcu. Jeśli edytowaliśmy plik2, to kopia jego zostanie zapisana pod nazwą plik2~. Jeśli edytujemy dość dużą ilość plików, to podczas wyświetlania zawartości może nam to utrudniać wyszukiwanie konkretnego pliku. Tak więc można wyświetlić zawartość, bez plików, kończących się tyldą. Rysunek 5 ilustruje ten przypadek.

ls - Wyświetlenie zawartości katalogu
Rys. 5. Polecenie ls -B

Aby wyświetlić posortowane dane według czasu ostatniej modyfikacji (Najpóźniej edytowane są wyświetlane w pierwszej kolejności), trzeba użyć opcji -t. Aby to lepiej zobaczyć, trzeba połączyć tę opcję, z opcją -l. Co w ostateczności da (rys. 6):

$ ls -lt

ls - Wyświetlenie zawartości katalogu
Rys. 6. Polecenie ls -lt, ls -l

Jak widać na rysunku 6, również jest pokazane polecenie ls tylko z opcją -l, które sortuje zawartość katalogu według nazwy.

Można wyłączyć wyróżnienie kolorami za pomocą przełącznika --color=xxx, gdzie xxx:

Polecenie takie przyjmuje postać, jak na rysunku 7.

ls - Wyświetlenie zawartości katalogu
Rys. 7. Polecenie ls --color=xxx

Aby wyświetlić dołączony wskaźnik do wyświetlanych danych, trzeba zastosować opcję -F (rys. 8)

ls - Wyświetlenie zawartości katalogu
Rys. 8. Polecenie ls -F

Do wyniku wyświetlenia dołączany jest jeden z następujących wskaźników lub brak w przypadku zwykłych plików:

Aby wyświetlić dane w postaci podobnej do ls -l z tą różnicą, że nie zostanie wyświetlony właściciel pliku, nalezy użyć opcji: -g (rys. 9). Aby nie wyświetlić grupy pliku, należy użyć opcji -G (samo użycie ls -G, wyświetla zawartość w krótkiej formie, tak więc, aby efekt był podobny do wyniku polecenia z opcją -l, należy wpisać: ls -lG). Można również połączyć te dwie opcję, (wyświetlenie informacji w długiej formie, bez właściciela oraz grupy pliku) wpisując:

$ ls -gG

ls - Wyświetlenie zawartości katalogu
Rys. 9. Polecenie ls -g

Aby wyświetlić zawartość katalogu, z pominięciem nie których plików, można zastosować opcję --hide=WZORZEC. Załóżmy, że chcemy wyświetlić zawartość katalogu, bez plików z rozszerzeniem *.c. Musimy w konsoli wpisać:

$ ls --hide=*.c

Istotną rzeczą jest fakt, iż można łączyć wzorce, czyli na przykład możemy wyświetlić zawartość katalogu bez plików zakończonych na rozszerzeniu *.c, oraz plików zaczynających się frazą pl. Aby to zrobić, wystarczy w konsoli wpisać:

$ ls --hide={*.c,pl*}

Dla sprostowania, znak wieloznaczności "*" (gwiazdka) oznacza w pierwszym przypadku WSZYSTKIE pliki kończące się rozszerzeniem .c. Drugie polecenie jest analogiczne, z tą różnicą, że dodaliśmy drugi wzorzec - pl*, co oznacza WSZYSTKIE pliki rozpoczynające się frazą: pl. Rysunek 10 ilustruje zastosowanie opcji --hide.

ls - Wyświetlenie zawartości katalogu
Rys. 10. Polecenie ls --hide

Ważną rzeczą jest też to, że jeśli wpisujemy więcej wzorców, to muszą one być oddzielone przecinkami BEZ SPACJI pomiędzy nimi.
Wzorce można podawać w cudzysłowie, jeśli plik w nazwie zawiera spację, to można wpisać nazwę całego pliku, ze spacjami w cudzysłowie. Natomiast wpisując bez cudzysłowu, trzeba wpisać znak ukośnika (slash) przed każdą spacją, natomiast powłoka bash potrafi uzupełniać nazwy polecenia za pomocą klawisza tab (opisane w Używanie terminala), przez co wpisywanie nawet długich nazw, nie sprawia problemu. Rysunek 11 prezentuje wspomniane zachowanie.

ls - Wyświetlenie zawartości katalogu
Rys. 11. Polecenie ls --hide

Polecenie ls z opcją -I działa właściwie w ten sam sposób, co chwile wcześniej omówiona opcja --hide, natomiast opcja --hide jest ignorowana, jeśli zostanie użyta wraz z opcją -a. Opcja -I nie wyświetli plików zawartych we wzorcu, nawet jeśli będziemy wyświetlać pliki ukryte (rozpoczynające się od kropki - opcje -a, -A). Polecenie to może przybierać jedną z dwóch postaci:

$ ls -I "*.c"

$ ls --ignore={*.c,pl*}

Rysunek 12, pokazuje zastosowanie tego polecenia. A rysunek 13, pokazuje różnice pomiędzy opcjami --hide, a --ignore (-I).

ls - Wyświetlenie zawartości katalogu
Rys. 12. Polecenie ls --ignore

ls - Wyświetlenie zawartości katalogu
Rys. 13. Polecenie ls --hide i ls --ingore - różnice

Podczas wyświetlania zawartości katalogu w wersji rozszerzonej (opcja -l), jeśli występuje dowiązanie symboliczne, to wyświetlone zostają informacje o tym dowiązaniu symboliczny, a nie o pliku, który jest z nim związany. Aby wyświetlić informacje o pliku, do którego dowiązanie się odnosi, trzeba użyć opcji -L. Na rysunku 14 zostało to pokazane. Wraz opcją -L, została użyta opcja -l, po to, a żeby wyświetlić bardziej szczegółowe informacje (czyli, to co nas naprawdę interesuje).

ls - Wyświetlenie zawartości katalogu
Rys. 14. Polecenie ls -L

Jak łatwo można zauważyć, pierwsze polecenie pokazuje szczegółowe informacje na temat samego dowiązania symbolicznego. Natomiast w kolejnej linii polecenie pokazuje informacje na temat pliku, który jest związany z dowiązaniem, co udowodniono w trzeciej linii wyświetlając informacje o tym pliku (plik1).

Wyświetlanie listy plików, oddzielonych od siebie przecinkami uzyskuje się dzięki opcji -m.

ls - Wyświetlenie zawartości katalogu
Rys. 15. Polecenie ls -m

Aby wyświetlić informacje, w cudzysłowie, nalezy użyć opcji -Q.

ls - Wyświetlenie zawartości katalogu
Rys. 16. Polecenie ls -Q

Wyróżnić tekst można też na inne sposoby, za pomocą opcji --quoting-style=SLOWO.
Gdzie SLOWO:

Aby uzyskać wyróżnienie ze znakami ucieczki (escapes), musimy wpisać w terminalu (rys. 17):

$ ls --quoting-style=escape

ls - Wyświetlenie zawartości katalogu
Rys. 17. Polecenie ls --quoting-style=escape

Analogicznie zamiast escape wstawiamy inne, wyżej wymienione słowa.

Wyświetlanie informacji o zawartości podfolderów można uzyskać za pomocą opcji -R.

ls - Wyświetlenie zawartości katalogu
Rys. 18. Polecenie ls -R

Jest to dość użyteczne, ponieważ nie musimy wchodzić do każdego katalogu i wpisywać ciągle ls, wystarczy jedno polecenie i właściwie wiemy, co gdzie "siedzi".

Wyświetlone dane można posortować według kilku kryteriów, wspomniane na początku tej strony sortowanie według czasu ostatniej modyfikacji uzyskuje się za pomocą opcji -t. Natomiast jest jeszcze kilka innych kryteriów sortowania, a mianowicie: brak (-U), rozszerzenie (-X), rozmiar (-S), wersja (-v). W nawiasach zostały podane opcje, które trzeba użyć wraz z poleceniem ls. Można też posortować wyświetlone dane za pomocą opcji --sort=SLOWO.

Gdzie SLOWO:

A więc, aby wyświetlić dane posortowane alfabetycznie według rozszerzenia, należy postąpić jak na rysunku 19. Obie wersje dają ten sam, widoczny efekt.

ls - Wyświetlenie zawartości katalogu
Rys. 19. Polecenie ls -X, ls --sort=extension

Do wspomnianych powyżej kryteriów sortowania można dodać opcję -r, która odwraca kolejność wyszukiwania na przeciwny. Na rysunku 19, wyświetlone dane zostały posortowane alfabetycznie według rozszerzenia. Na rysunku 20 kolejność jest odwrotna.

ls - Wyświetlenie zawartości katalogu
Rys. 20. Polecenie ls -rX, ls -r --sort=extension

Wyświetlanie zawartości katalogu bez dodatkowych informacji (poza nazwą), każdy wpis w nowej lini realizuje się za pomocą opcji -1.

ls - Wyświetlenie zawartości katalogu
Rys. 21. Polecenie ls -1

W gruncie rzeczy (mówię to z doświadczenia) używa się dwóch lub trzech opcji do wyświetlania zawartości katalogu (oczywiście w takiej podstawowej i codziennej pracy z konsolą). Nie mniej jednak polecenie ls, jest bardzo rozbudowane i nie wszystkie opcję zostały przedstawione na tej stronie.


Wiecej informacji na temat programu ls znajdziesz w podreczniku systemowym man.
Wpisujac w konsoli man ls

Wiecej informacji na temat programu ls znajdziesz również w programie info.
Wpisujac w konsoli info coreutils 'ls invocation'

Zobacz także:

Some rights reserved 2010 - 2015 Artur Pyszczuk

| Strona Główna | Kontakt |