ls
Список файлов каталога — права, владельцы, размеры, даты, сортировка
ls показывает содержимое каталогов и сведения о файлах. Без аргументов — текущий каталог, скрытые файлы (имя начинается с точки) не показываются. В песочнице — GNU coreutils 9.4.
Синтаксис
ls [опции] [файл_или_каталог…]
Если аргумент — каталог, ls печатает его содержимое; чтобы увидеть сам каталог, добавь -d. Несколько аргументов: сначала файлы, потом каждый каталог отдельным блоком с заголовком имя:.
Код возврата: 0 — всё в порядке, 1 — мелкие проблемы (не открылся подкаталог), 2 — серьёзные (аргумента не существует).
Длинный формат -l
-rw-r--r-- 1 root root 1530 Sep 30 13:10 /etc/passwd
drwxr-xr-x 2 root root 4096 Oct 13 15:20 sub
lrwxrwxrwx 1 root root 5 Oct 13 15:20 lnk -> a.txt
crw-rw-rw- 1 root root 1, 3 Oct 13 15:20 /dev/null
| Колонка | Что значит |
|---|---|
| 1-й символ | тип: - файл, d каталог, l символическая ссылка, c символьное устройство, b блочное устройство, p именованный канал (FIFO), s сокет |
rw-r--r-- | права владельца, группы, остальных. s/S на месте x — SUID/SGID (с x / без), t/T — sticky-бит (как у /tmp: drwxrwxrwt) |
+ после прав | у файла есть ACL (смотри getfacl) |
| число | счётчик жёстких ссылок; у каталога обычно 2 + число подкаталогов (в overlayfs контейнеров бывает просто 1) |
root root | владелец и группа (-n — числовые UID/GID) |
| размер | в байтах (-h — в K/M/G). У каталога — размер самой записи каталога (обычно 4096), не содержимого. У устройств — пара «старший, младший» номер |
| дата | время изменения содержимого (mtime). Файлы моложе полугода — Мес ДД ЧЧ:ММ, старше — Мес ДД ГГГГ |
| имя | для ссылки — имя -> цель |
Строка total N над списком — сколько места занимают перечисленные файлы, в блоках по 1 КиБ (с -h — в K/M).
Опции
Что показывать
| Опция | Что делает |
|---|---|
-a | показывать всё, включая скрытые и ./.. |
-A | скрытые показывать, а . и .. — нет |
-d | показать сам каталог, а не его содержимое: ls -ld /etc |
-R | рекурсивно обойти подкаталоги |
-I 'шаблон' | скрыть подходящие имена (можно повторять); --hide='шаблон' — то же, но -a/-A его отменяют |
-L | для ссылок показывать сведения о цели, а не о самой ссылке |
-H | следовать ссылкам только из командной строки |
Формат вывода
| Опция | Что делает |
|---|---|
-l | длинный формат (таблица выше) |
-h | размеры в виде 1.5K, 234M, 2G (степени 1024); --si — степени 1000 |
--block-size=M | показывать размеры в заданных единицах (K, M, G), округляя вверх |
-n | как -l, но числовые UID и GID вместо имён |
-g / -o | как -l, но без владельца / без группы |
-i | номер inode перед именем |
-s | занятое на диске место в блоках (с -h — в K/M) |
-1 | по одному имени в строке |
-m | через запятую в строку |
-F | значок типа после имени: / каталог, * исполняемый, @ ссылка, | FIFO, = сокет |
-p | только / после каталогов |
--full-time | полная дата с секундами, наносекундами и поясом |
--time-style=long-iso | дата 2026-10-13 15:20; full-iso, iso, +ФОРМАТ (как у date): --time-style=+%F |
-Q | имена в двойных кавычках; -N — вообще без кавычек |
--color=auto | раскраска по типам, только если вывод идёт в терминал; always — всегда, never — никогда |
--group-directories-first | каталоги в начале списка |
Сортировка
По умолчанию — по имени с учётом локали.
| Опция | Как сортирует |
|---|---|
-t | по времени изменения (mtime), новые сверху |
-S | по размеру, крупные сверху |
-X | по расширению |
-v | «естественно»: b2 раньше b10 |
-U | не сортировать (порядок в каталоге) — быстрее на огромных каталогах |
-r | перевернуть любой порядок: -ltr — старые сверху, свежие внизу |
--sort=WORD | size, time, version, extension, width, none |
-u | с -lt: сортировать и показывать по времени доступа (atime) |
-c | с -lt: по времени изменения метаданных (ctime) |
--time=birth | использовать время создания файла (если ФС его хранит) |
Примеры
# подробно, со скрытыми файлами и человеческими размерами
ls -lah /etc/ssh
# права самого каталога, а не его содержимого
ls -ld /var/log
# самые свежие файлы — внизу списка
ls -ltr /var/log
# пять самых больших файлов в каталоге
ls -lS /usr/bin | head -6
# только подкаталоги текущего каталога
ls -d */
# номера inode: у жёстких ссылок они совпадают
ls -li
# дата в ISO-формате — удобно для сравнения и скриптов
ls -l --time-style=long-iso /etc/hostname
# числовые UID/GID — видно, если владельца нет в /etc/passwd
ls -ln /srv
Подводные камни
- Не разбирай вывод
lsв скриптах. Имена с пробелами и переводами строк ломаютfor f in $(ls), а формат даты зависит от возраста файла и локали. Используй глобfor f in *илиfind … -print0. - Вывод в терминал и в конвейер различается. В терминале — колонки и имена в кавычках (
'with space'), в конвейере (ls | …) — по одному имени в строке без кавычек. ls -l каталогпоказывает содержимое, а не права каталога. Для самого каталога —-d.- Ссылка на каталог:
ls ссылкапокажет содержимое цели, аls -l ссылка— саму ссылку (ld -> d). Добавь/в конце (ls -l ссылка/) или-L, чтобы заглянуть внутрь. - Размер каталога в
-l(4096) — не размер содержимого. Сколько весит каталог целиком, считает du. -t,-Sи-rс файлами-аргументами сортируют только файлы; каталоги из аргументов всё равно выводятся отдельными блоками после них — добавь-d.--block-size=Kокругляет вверх: файл в 1530 байт покажется как2K.- Цвета. В bash-скрипте алиаса
ls --color=autoнет — без--colorвывод не раскрашивается. С--color=alwaysв файл попадут escape-коды.