ls (Unix)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

lsprogram komputerowy, który po jego użyciu spowoduje wypisanie w postaci listy zawartości danego katalogu. Dodany z dodatkowymi parametrami pokazuje również informacje o pliku, w tym kto ma do niego dostęp, kiedy powstał etc.

Przykłady użycia[edytuj | edytuj kod]

  • $ ls /home/user/Muzyka - wypisze wszystkie pliki, jakie znajdują się w katalogu /home/user/Muzyka.
  • $ ls /home/user/Muzyka > Muzyka.txt - zawartość podanego katalogu zostanie zapisana w pliku 'Muzyka.txt'.

Opis[edytuj | edytuj kod]

dir i vdir są wersjami ls o różnych domyślnych formatach wyjściowych. Polecenia te wyświetlają informację o plikach (dowolnego typu, łącznie z katalogami). Opcje i argumenty określające pliki mogą być używane w dowolnej kolejności.

Dla nieopcyjnych argumentów wiersza poleceń określających katalogi domyślnie ls podaje zawartość katalogów, bez podkatalogów i z pominięciem plików o nazwach rozpoczynających się kropką. Dla innych argumentów, nie stanowiących opcji ls wyświetla jedynie nazwę pliku. Jeżeli nie podano innych niż opcje argumentów, to wyświetlana jest zawartość bieżącego katalogu.

Domyślnie wyniki są sortowane alfabetycznie. Jeżeli standardowym wyjściem jest terminal to wyniki wyświetlane są w szpaltach (kolumnach) posortowanych pionowo a znaki kontrolne wyprowadzane są jako znaki zapytania; w innym wypadku są listowane jeden na wiersz a znaki kontrolne wyprowadzane są bez zmian. W dir pliki domyślnie są wyświetlane w kolumnach, posortowanych pionowo. W vdir pliki są domyślnie listowane w długim formacie.

Opcje[edytuj | edytuj kod]

Ponieważ ls jest programem podstawowym, to w ciągu wielu lat zgromadził mnóstwo opcji. Opisane są one w podsekcjach grupujących opcje dotyczące różnych aspektów pracy ls. Podział ten nie jest sztywny, gdyż niektóre z nich mają wpływ na więcej niż jeden aspekt działania ls.

1. Jakie pliki są wyświetlane - opcje te określają, dla których plików ls będzie wyświetlać informacje. Domyślnie wyświetlane są wszystkie pliki i zawartości katalogów podanych w wierszu poleceń (z wyjątkiem rozpoczynających się kropką, chyba że jawnie podano je jako argumenty).

-a, --all Listuj również pliki zaczynające się od `.' wyświetlane.

-A, --almost-all Listuj wszystkie pliki w katalogach, poza `.' i nie listuj plików, które kończą się na `~', chyba że podano je w wierszu poleceń. Są to zwyczajowo pliki kopii zapasowych.

-d, --directory Drukuj tylko nazwy katalogów, tak jak innych plików, zamiast wyświetlać ich zawartość.

-I wzorzec, --ignore=wzorzec Nie listuj plików, których nazwy odpowiadają wzorcowi powłokowemu (nie wyrażeniu regularnemu) wzorzec chyba że podano je w wierszu poleceń. Podobnie jak w powłoce, `.' na początku nazwy pliku nie oznacza znaku uogólnienia na początku wzorca. Czasami przydaje się kilkakrotne podanie tej opcji. Na przykład: $ ls --ignore='.??*' --ignore='.[^.]' --ignore='#*'

Pierwsza z opcji pomija nazwy o długości 3 lub więcej znaków rozpoczynające się od `.', druga pomija wszystkie dwuznakowe nazwy rozpoczynające się od `.' z wyjątkiem `..', a trzecia pomija nazwy rozpoczynające się od `#'.

-L, --dereference W długim formacie wyświetlania pokaż dane (czasy, prawa) dotyczące plików wskazywanych przez dowiązania symboliczne, zamiast danych samych dowiązań.

-R, --recursive Listuj rekurencyjnie zawartości wszystkich katalogów (czyli wyświetla również podkatalogi).


2. Jaka informacja jest wyświetlana - opcje te wpływają na to, jaką informację wyświetla ls. Domyślnie pokazywane są tylko nazwy plików. -D, --dired Przy użyciu "długiego" formatu (-l) podaje dodatkowy wiersz po wyświetleniu głównych informacji: //DIRED// POCZ1 KON1 POCZ2 KON2 ... POCZN i KONN są liczbami całkowitymi bez znaku (unsigned integer), opisującymi pozycję w bajtach początku i końca każdej nazwy pliku w wyświetlonej liście. Ułatwia to Emacsowi odnalezienie nazw plików, nawet jeśli zawierają nietypowe znaki, jak spacje czy znaki nowej linii, bez potrzeby udziwnionego wyszukiwania.

-G, --no-group Nie wyświetlaj informacji o grupie w listingu katalogu długiego formatu. (Jest to domyślne zachowanie niektórych wersji polecenia ls innych niż wersje GNU, więc opcja ta została dodana z uwagi na zgodność.)

-i, --inode Wydrukuj numer indeksowy (numer i-węzła, numer seryjny) każdego pliku po lewej stronie jego nazwy. (Numer ten jednoznacznie identyfikuje plik w ramach danego systemu plików.)

-l, --format=long, --format=verbose Oprócz nazwy każdego pliku, wydrukuj jego typ, prawa, liczbę dowiązań twardych, właściciela, grupę, rozmiar w bajtach i timestamp (czas modyfikacji, chyba że wybrano inne czasy). Dla plików z czasem, który jest wysunięty więcej niż 6 miesięcy w przeszłość lub 1 godzinę w przyszłość, timestamp zawiera określenie roku zamiast godziny. Zawartość każdego wyświetlanego katalogu poprzedzana jest wierszem z napisem `total BLOKÓW', gdzie BLOKI są całkowitą przestrzenią dysku zajmowaną przez wszystkie pliki w tym katalogu. Domyślnie używane są obecnie bloki 1024-bajtowe, ale można to zmienić. BLOKI zliczane są osobno dla każdego dowiązania twardego; jest to usterka dyskusyjna. Uprawnienia wyświetlane są w sposób zbliżony do specyfikacji trybu symbolicznego (zobacz `Tryby symboliczne' w podręczniku fileutils(1)). Jednakże ls łączy wiele bitów na trzecim znaku każdej z grup praw. Znaki te ustalane są według następujących reguł:

s Jeżeli ustawione są bity SETUID lub SETGID oraz odpowiedni bit wykonywalności.

S Jeżeli ustawione są bity SETUID lub SETGID, ale odpowiedni bit wykonywalności nie jest lepkości (sticky bit) i bit wykonywania dla innych użytkowników.

T Jeżeli ustawiony jest bit lepkości, ale nie jest ustawiony bit wykonywania dla innych użytkowników.

x Bit prawa wykonywania jest ustawiony, ale nie zachodzi żadna z powyższych sytuacji.

- W pozostałych przypadkach.

-o Użyj długiego formatu wyświetlania, ale nie wyświetlaj informacji o grupie. Równoważne użyciu opcji --format=long wraz z opcją --no-group. Opcja zapewniana dla celów zgodności z innymi wersjami ls.

-s, --size Drukuj zajętość dysku przez każdy plik z lewej strony jego nazwy. Jest to wielkość przestrzeni dyskowej zużytej przez plik, co zwykle wynosi nieco więcej niż rozmiar pliku, ale może to być również mniej, jeśli plik ma dziury. Zwykle zajętość dysku drukowana jest w jednostkach 1024-bajtowych, może to być jednak zmienione.


3. Sortowanie wyników -

-c, --time=ctime, --time=status Jeżeli używany jest długi format wyświetlania (np. -l, -o), drukuj czas zmiany statusu (ctime i-węzła) zamiast czasu modyfikacji. Przy jawnym sortowaniu według czasu (--sort=time lub -t) lub jeśli nie jest używany długi format, sortuj zawartość katalogu według według czasu zmiany statusu plików.

-f Przede wszystkim, jak -U -- nie sortuj zawartości katalogów. Podaj je w takiej kolejności, w jakiej są zapisane w katalogu. Ale również włącza opcję -a (listuj wszystkie pliki) a wyłącza -l, -s, i --color (jeśli zostały podane przed -f). Sortuj zawartość katalogu w odwróconym porządku (tzn. w odwrotnej kolejności alfabetycznej, najpierw najmłodsze, najpierw najmniejsze itp., w zależności od podstawowej metody sortowania).

-S, --sort=size Sortuj zawartość katalogu według rozmiaru pliku, zamiast sortowania alfabetycznego. Największe pliki wyświetlane będą na początku.

-t, --sort=time Sortuj zawartość katalogów według czasu modyfikacji (mtime i-węzła), zamiast sortowania alfabetycznego. Najnowsze pliki są pierwsze.

-u, --time=atime, --time=access, --time=use Jeżeli używany jest długi format wyświetlania (np. --format=long), drukuj czas ostatniego dostępu do pliku (atime i-węzła). Przy jawnym sortowaniu według czasu (--sort=time lub -t) lub jeśli nie jest używany długi format, sortuj zawartość katalogu według według czasu dostępu do plików.

-U, --sort=none Nie sortuj zawartości katalogów; listuj je w takim porządku, w jakim są zapisane na dysku. (Nie wykonuj żadnych innych, nie mających związku rzeczy, jakie robi -f.) Opcja ta nie jest nazwana -f ponieważ uniksowy ls -f włącza -a i wyłącza -l, -s i -t. Wydaje się bezużytecznym i brzydkim grupowanie niezwiązanych rzeczy naraz w jednej opcji. Skoro ta opcja tego nie robi, ma inną nazwę. Szczególnie przydatna przy listowaniu obszernych katalogów, gdyż brak sortowania znacznie przyspiesza otrzymanie wyniku.

-v, --sort=version Sortuj według nazwy i numeru wersji, najpierw o najmniejszym numerze. Zachowuje się podobnie jak domyślne sortowanie, z wyjątkiem tego, że każda sekwencja cyfr dziesiętnych traktowana jest numerycznie jako indeks/numer wersji.

-X, --sort=extension Sortuj zawartość katalogów alfabetycznie według rozszerzeń plików (znaki po ostatniej kropce); pliki bez rozszerzenia są sortowane jako pierwsze.


4. Ls w kolorze

Gdy używa się opcji --color, obecna wersja ls pokoloruje nazwy plików odpowiednio do nazwy i typu pliku. Domyślnie ta koloryzacja zależy tylko od typu pliku, a użyte kody są zgodne z ISO 6429 (ANSI). Możesz unieważnić domyślne kolory przez zdefiniowanie zmiennej środowiskowej LS_COLORS (lub LS_COLOURS). Format tej zmiennej jest podobny do formatu pliku termcap(5): oddzielona dwukropkami lista wyrażeń w formie "xx=napis", gdzie "xx" jest dwuznakową nazwą zmiennej. Zmienne wraz z towarzyszącymi im wartościami domyślnymi to:

        no       0       Normalny tekst (nie nazwy pliku)
        fi       0       Normalny plik
        di       32      Katalog
        ln       36      Dowiązanie symboliczne
        pi       31      Nazwany potok (FIFO)
        so       33      Gniazdo
        bd       44;37   Urządzenie blokowe
        cd       44;37   Urządzenie znakowe
        ex       35      Plik wykonywalny
        mi       (none)  Brakujący plik (domyślnie jak fi)
        or       (none)  Osierocone dowiązanie symboliczne (domyślnie jak ln)
        lc       \e[     Kod lewa
        rc       m       Kod prawa
        ec       (none)  Kod końca (End code) (zastępuje lc+no+rc)

Musisz tylko włączyć zmienne, które chcesz zmienić z wartości domyślnych. Nazwy plików mogą być też kolorowane według rozszerzeń plików. Jest to określone w zmiennej LS_COLORS według składni "*rozszerzenie=napis". Na przykład, używając kodów ISO wszystkie pliki kończące się na .c na niebiesko.

Znaki kontrolne mogą być pisane zarówno w notacji w stylu C (notacja \-eskejpowa) jaki i w ^-notacji typu stty. Notacja C dodaje dla Escape \e, \_ dla normalnej spacji, a \? dla Delete. Dodatkowo, znak \ może zostać użyty do przeciążania domyślnej interpretacji \, ^, :, =. Każdy plik będzie wypisany jako <lc> <kod koloru> <rc> <nazwa pliku> <ec>. Jeśli kod <ec> jest niezdefiniowany, użyta zostanie sekwencja <lc> <no> <rc>. Jest to generalnie bardziej przekonujące w użyciu, lecz mniej ogólne. Kody lewo, prawo i końca są udostępniane, abyś nie musiał wypisywać wciąż wspólnych elementów i aby wspierać dziwne terminale; ogólnie zwykle nie chcesz ich zmienić w ogóle, chyba że twój terminal nie używa sekwencji ISO 6429, a innego systemu.

Jeśli twój terminal korzysta z kodów kolorów ISO 6429, możesz składać rodzaje kodów (np. wszystkich poza lc, rc, i ec ) z numerycznych komend oddzielonych średnikami. Najpopularniejszymi komendami są:

         0     Odtwórz domyślny kolor
         1     Rozjaśnij kolor
         4     Podkreśl tekst
         5     Migaj tekstem
        30     Czarny kolor
        31     Czerwony kolor
        32     Zielony kolor
        33     Żółty (lub brązowy) kolor
        34     Niebieski kolor
        35     Purpurowy kolor
        36     Cyjankowy kolor
        37     Biały (lub szary) kolor
        40     Czarny kolor tła
        41     Czerwony kolor tła
        42     Zielony kolor tła
        43     Żółty (lub brązowy) kolor tła
        44     Niebieski kolor tła
        45     Purpurowy kolor tła
        46     Cyjankowy kolor tła
        47     Biały (lub szary) kolor tła

Linki zewnętrzne[edytuj | edytuj kod]