Команда ls отображает список файлов и каталогов в определенном каталоге. Она имеет следующую форму:
ls [options] [FILE]
В качестве необязательного аргумента FILE команда принимает каталог, содержимое которого надо вывести. Если этот аргумент не указан, то выводится содержимое текущего каталога.
Также команде могут передаваться необязательные параметры. Поскольку их довольно много, рассмотрим только основные и распространенные сценарии их использования.
Итак, если команде не передать ни пути к файлу, ни параметры, то она выводит содежимое текущего каталога в виде простого списка:
eugene@Eugene:~$ ls Desktop Downloads image.png Music Public Videos Documents hello.txt index.tml Pictures Templates eugene@Eugene:~$
Стоит учитывать, что по умолчанию не выводятся скрытые папки и файлы.
Теперь посмотрим на содержимое конкретного каталога, например, "/usr":
eugene@Eugene:~$ ls /usr bin include lib32 libexec sbin src games lib lib64 local share eugene@Eugene:~$
Вместо конкретной папки можно указать шаблон файлов, в котором символ звездочка * представляет заменитель для произвольных символов. Например:
eugene@Eugene:~$ ls /etc/*a.* /etc/pnm2ppa.conf
В данном случае получаем все файлы из папки "/etc", которые заканчиваются на "a" и имеют произвольное расширение.
Другой пример - найдем все каталоги и файлы, названия которых начинаются либо на a, либо на b, либо на c:
eugene@Eugene:~$ ls /etc/[abc]* /etc/adduser.conf /etc/bindresvport.blacklist /etc/anacrontab /etc/brlapi.key /etc/apg.conf /etc/brltty.conf /etc/appstream.conf /etc/ca-certificates.conf /etc/bash.bashrc /etc/crontab /etc/bash_completion /etc/alsa: conf.d /etc/alternatives: arptables jdeps pager.1.gz
Выражение [abc]
указывает, что символ должен представлять букву a, b или c, а звездочка после - [abc]*
указывает, что дальше может идти произвольное количество символов.
Единственно надо учитывать, что если название каталога соответствует данному фильтру, то выводится все содержимое каталога.
Символ звездочка * позволяет вывести также содержимое подкаталогов из текущей папки:
eugene@Eugene:~$ ls * hello.txt image.png index.tml Desktop: Documents: Downloads: docs.tar.bz2 Music: Pictures: Public: Templates: Videos:
Опция -R позволяет рекурсивно получить содержимое подкаталогов. Например, получим содержимое папки Pictures из домашнего каталога пользователя:
eugene@Eugene:~$ ls -R ~/Pictures /home/eugene/Pictures: Screenshots /home/eugene/Pictures/Screenshots: 'Screenshot from 2024-03-05 14-38-17.png' 'Screenshot from 2024-03-05 14-45-57.png' 'Screenshot from 2024-03-05 14-49-10.png' 'Screenshot from 2024-03-06 14-25-12.png' eugene@Eugene:~$
Для вывода только каталогов применяется опция -d
ls -d */
Для рядом с файлами размера в киллобайтах применяется опция -s (нижний регистр)
ls -s
Для сортировки файлов по размеру применяется опция -S (верхний регистр)
ls -S
Для сортировки файлов по времени доступа применяется опция -t
ls -t
Для вывода свойств каталогов и файлов применяется опция -l:
eugene@Eugene:~$ ls -l total 216 drwxrwxr-x 2 eugene eugene 4096 Mar 9 10:41 Desktop drwxrwxr-x 2 eugene eugene 4096 Mar 9 10:40 Documents drwxrwxr-x 2 eugene eugene 4096 Mar 9 10:44 Downloads -rw-rw-r-- 1 eugene eugene 1572 Mar 7 21:00 hello.txt -rw-rw-r-- 1 eugene eugene 177489 Feb 26 09:49 image.png -rw-rw-r-- 1 eugene eugene 67 Feb 23 23:07 index.tml drwxrwxr-x 2 eugene eugene 4096 Mar 9 09:49 Music drwxrwxr-x 2 eugene eugene 4096 Mar 9 09:49 Pictures drwxrwxr-x 2 eugene eugene 4096 Mar 9 10:41 Public drwxrwxr-x 2 eugene eugene 4096 Mar 9 10:41 Templates drwxrwxr-x 2 eugene eugene 4096 Mar 9 09:49 Videos eugene@Eugene:~$
Эта команда отображает данные в виде следующих столбцов:
Тип файла: самая первая буква показывает тип файла. Если отображается дефис -, это обычный файл. Если отображается буква d, то это каталог.
Разрешения: сразу после типа файла идут разрешения, назначенные этому файлу. Есть девять позиций, которые показывают права доступа к файлам, например, rwxrwxr-x
. Далее мы подробнее рассмотрим разрешения.
Количество ссылок на содержимое
Владение: в Linux у каждого файла есть владелец пользователя и владелец группы. В следующем примере выше всех файлов и каталогов в качестве владельца установлен текущей пользователь - в моем случае "eugene", а в качестве группы - одноименная группа этого пользователя.
Размер файла: рядом с владельцем группы отображается размер файла в байтах.
Дата и время создания: для каждого файла также отображаются дата и время создания.
Имя файла: в последнем столбце вывода можно увидеть имя файла.
Использование опции -a выводит скрытые файлы:
eugene@Eugene:~$ ls -a . Desktop image.png Pictures Videos .. Documents index.tml .profile .bash_history Downloads .local Public .bashrc hello.txt Music Templates eugene@Eugene:~$
Соответственно для вывода подробной информацию эту опцию можно комбинировать с опцией "-l":
ls -a -l
Нередко применяется вывод команды в файл. Например выведем результат команды в файл "output.txt":
ls -a -l > output.txt