ls — это команда Linux и других Unix-подобных систем, которая выводит в терминал список файлов и каталогов. Без аргументов она показывает содержимое текущего каталога, а с указанным путем — содержимое заданной папки. Имя расшифровывается как list (список).
Содержание
Ниже разберу, что показывает ls, как читать вывод в подробном формате ls -l, какие флаги нужны чаще всего (-l, -a, -h, -t, -S, -R и другие) и как они комбинируются. Все примеры команд можно скопировать и запустить в терминале.
Что делает ls и как ее запустить
Команда набирается в терминале и сразу дает результат. Проще всего начать без флагов — так виден чистый список имен в текущем каталоге:
mkdir demo && cd demo
touch report.txt notes.md data.csv
ls
Вывод (имена отсортированы по алфавиту):
data.csv
notes.md
report.txt
По умолчанию ls показывает только обычные файлы и каталоги и не выводит служебные детали — права, размер, дату. Скрытые файлы (те, чье имя начинается с точки) она тоже не показывает без специального флага.
Можно передать путь — тогда ls выведет содержимое именно этого каталога, не переходя в него:
ls /etc
Если вместо каталога указать конкретный файл, команда просто покажет его имя (а с флагом -l — и подробности о нем).
Как читать вывод ls -l
Флаг -l (long, подробный формат) — главный флаг ls. Он выводит по одной строке на файл с правами доступа, владельцем, размером и датой изменения:
ls -l
Строка для файла выглядит примерно так (владелец, дата и размер зависят от системы):
-rw-r--r-- 1 anna developers 2048 Sep 16 12:30 report.txt
Разберу поля слева направо:
-rw-r--r--— тип и права доступа (10 символов, о них ниже);1— число жестких ссылок на файл;anna— владелец файла;developers— группа-владелец;2048— размер в байтах;Sep 16 12:30— дата и время последнего изменения содержимого;report.txt— имя.
Первые 10 символов — это тип файла и права доступа. Первый символ задает тип, остальные девять делятся на три группы по три:
- символ 1 — тип:
-обычный файл,dкаталог,lсимволическая ссылка,cилиb— устройства,p— именованный канал (FIFO),s— сокет; - символы 2-4 — права владельца (
rwx: чтение, запись, выполнение); - символы 5-7 — права группы;
- символы 8-10 — права всех остальных.
То есть -rw-r--r-- читается так: обычный файл; владелец может читать и писать (rw-), группа только читать (r--), остальные тоже только читать (r--). Прочерк на месте буквы означает, что права нет.
Важная деталь: время в выводе -l — это время последнего изменения содержимого файла (mtime), а не время создания. У каталога размер в байтах относится к самой записи каталога, а не к суммарному объему вложенных файлов.
Основные флаги ls
Флаги можно комбинировать: например, ls -l -a и ls -la — одно и то же. Ниже сведены те, что нужны чаще всего.
| Флаг | Что делает |
|---|---|
-l |
Подробный формат: права, владелец, размер, дата |
-a, --all |
Показать все, включая скрытые файлы и записи . и .. |
-A, --almost-all |
Как -a, но без . и .. |
-h, --human-readable |
Размеры в удобных единицах (K, M, G); работает вместе с -l |
-t |
Сортировать по времени изменения, новые сверху |
-S |
Сортировать по размеру, крупные сверху |
-r, --reverse |
Обратный порядок сортировки |
-R, --recursive |
Рекурсивно обойти все вложенные каталоги |
-F, --classify |
Добавить к именам метки типа: / каталог, * исполняемый, @ ссылка |
-i, --inode |
Показать номер inode (индексного дескриптора) |
-d, --directory |
Показать сам каталог, а не его содержимое |
-1 |
По одному имени в строке |
--color=auto |
Подсветка имен цветом (auto, always или never) |
Длинные варианты вроде --all и --human-readable доступны в GNU coreutils (стандартный ls в Linux). Короткие однобуквенные флаги (-a, -l, -h) работают и в Linux, и в macOS.
Примеры использования ls
Скрытые файлы: -a и -A
Файлы, чье имя начинается с точки (например, .config), по умолчанию не видны. Флаг -a показывает их вместе с записями . (текущий каталог) и .. (родительский). Флаг -A делает то же, но без этих двух записей:
mkdir demo && cd demo
touch visible.txt .config
ls
echo "--- ls -a ---"
ls -a
echo "--- ls -A ---"
ls -A
Вывод:
visible.txt
--- ls -a ---
.
..
.config
visible.txt
--- ls -A ---
.config
visible.txt
Человекочитаемые размеры: -lh
Само по себе -l показывает размер в байтах, что неудобно для больших файлов. Флаг -h вместе с -l переводит размеры в килобайты, мегабайты и гигабайты:
ls -lh /var/log
Вместо 10485760 в колонке размера появится 10M. Флаг -h работает только вместе с -l (или другими форматами, где виден размер), сам по себе он на вывод не влияет.
Метки типов: -F
Флаг -F дописывает к именам символ-подсказку: / для каталога, * для исполняемого файла, @ для символической ссылки. По списку сразу видно, где папка, а где программа:
mkdir demo && cd demo
mkdir logs
touch app.py run.sh
chmod +x run.sh
ls -F
Вывод:
app.py
logs/
run.sh*
Здесь logs/ — каталог, run.sh* — исполняемый файл, а app.py — обычный файл без метки.
Рекурсивный обход: -R
Флаг -R выводит содержимое каталога и всех вложенных папок:
mkdir -p project/src && cd project
touch main.py src/utils.py
ls -R
Вывод в Linux (GNU ls) выглядит так — каждый каталог со своим заголовком:
.:
main.py
src
./src:
utils.py
На больших деревьях вывод бывает объемным, поэтому -R обычно комбинируют с фильтрами или направляют в постраничный просмотр (ls -R | less). В macOS (BSD ls) заголовок верхнего уровня .: не печатается, а подкаталоги подписываются так же — формат зависит от реализации ls.
Сортировка по времени и размеру: -t, -S, -r
По умолчанию ls сортирует по имени. Флаг -t сортирует по времени изменения (новые сверху), -S — по размеру (крупные сверху). Флаг -r разворачивает любой порядок.
Частая комбинация — ls -ltr: подробный список, отсортированный по времени в обратном порядке. Самые свежие файлы оказываются внизу, у приглашения командной строки, где их удобно смотреть:
ls -ltr
А чтобы найти самые тяжелые файлы в каталоге, берут ls -lhS — подробный список с человекочитаемыми размерами, крупные сверху.
Номер inode: -i
Каждый файл в файловой системе имеет уникальный номер — inode (индексный дескриптор). Флаг -i выводит его перед именем:
ls -i
Перед каждым именем появится число, например 1835 report.txt. По номеру inode можно, в частности, отличать жесткие ссылки: у двух имен с одинаковым inode — один и тот же файл на диске.
Один каталог без содержимого: -d
Обычно ls somedir показывает содержимое каталога. Если нужны сведения о самом каталоге (например, его права), добавляют -d:
ls -ld /tmp
Без -d вывелся бы список файлов внутри /tmp, а с -d — одна строка про сам каталог /tmp.
Полезные комбинации на каждый день
Несколько сочетаний, которые стоит запомнить:
ls -la— подробный список со скрытыми файлами; самая частая команда при работе с конфигами и домашним каталогом;ls -lh— подробный список с удобными размерами;ls -ltr— по времени, свежие внизу; удобно смотреть, что менялось последним;ls -lhS— крупные файлы сверху; помогает искать, что занимает место;ls -1— по одному имени в строке; удобно, когда вывод идет в другую команду (ls -1 | wc -lпосчитает число файлов).
Где применяется ls на практике
ls — одна из первых команд, которую осваивают при работе в терминале Linux: с нее начинается навигация по файловой системе, проверка прав доступа перед изменением файлов, поиск логов и разбор, что занимает место на диске. Вместе с cd, cp, mv и rm она составляет базовый набор для повседневной работы администратора и разработчика.
Освойте тему на практике
Разобрать команды терминала, права доступа и работу с файловой системой Linux по шагам помогает курс Linux для начинающих в Otus. Посмотреть формат занятий и уровень, не оплачивая курс, можно на бесплатных вебинарах — там разбирают конкретные задачи и отвечают на вопросы.
Смежные темы: Что такое файл и папка: основные действия, Установка Linux с флешки, Скриптовые языки для админов и разработчиков.
FAQ
Чем отличаются флаги -a и -A?
Оба показывают скрытые файлы (те, что начинаются с точки). Разница в служебных записях: -a выводит еще . (текущий каталог) и .. (родительский), а -A их пропускает и показывает только реальные файлы.
Почему ls в скрипте выводит файлы в один столбец, а в терминале — в несколько?
Когда вывод идет не на экран, а в файл или другую команду, ls по умолчанию печатает по одному имени в строке — так результат проще обрабатывать. В интерактивном терминале включается многоколоночный вид под ширину окна.
Как посмотреть только каталоги в текущей папке?
Прямого флага «только каталоги» у ls нет. Обычно используют шаблон с завершающим слешем — ls -d */: он оставит в выводе только вложенные каталоги.
Выводы
- ls выводит список файлов и каталогов; без аргументов — для текущего каталога, с путем — для указанного.
- Флаг
-lдает подробный формат: первые 10 символов — тип файла и права (три группы rwx для владельца, группы и остальных), дальше число ссылок, владелец, группа, размер, дата и имя. - Скрытые файлы показывают флаги
-a(с записями.и..) и-A(без них); удобные размеры —-hвместе с-l. - Сортировку задают
-t(по времени),-S(по размеру) и-r(обратный порядок); рекурсивный обход —-R. - Флаги свободно комбинируются:
ls -la,ls -lh,ls -ltr,ls -lhSпокрывают большинство повседневных задач.



