Ls: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 1: Строка 1:
{{чистить}}<!-- слишком много руководств из мана-->
{{чистить}}<!-- слишком много руководств из мана-->
{{lowercase}}
{{lowercase}}
'''ls''' (dir, vdir) — команда [[Unix]]-подобной [[Операционная система|операционной системы]], которое выводит (обычно на консоль) содержимое [[директория (файловая система)|каталога]] (по умолчанию текущего).
'''ls''' (dir, vdir) — команда [[Unix]]-подобной [[Операционная система|операционной системы]], которое выводит (обычно на консоль) содержимое [[директория (файловая система)|каталога]] (по умолчанию текущего).


== Синтаксис ==
== Синтаксис ==
Строка 13: Строка 13:
Каждый список файлов (для файлов, которые не являются каталогами и для каждого каталога, содержащего список файлов) сортируется отдельно в алфавитной последовательности текущих региональных настроек ([[locale]]). Когда указана опция -l, то перед каждым списком выводится итоговая строка с общим размером всех файлов в списке, который измеряется в полу-[[килобайт]]ах (512 [[байт]]).
Каждый список файлов (для файлов, которые не являются каталогами и для каждого каталога, содержащего список файлов) сортируется отдельно в алфавитной последовательности текущих региональных настроек ([[locale]]). Когда указана опция -l, то перед каждым списком выводится итоговая строка с общим размером всех файлов в списке, который измеряется в полу-[[килобайт]]ах (512 [[байт]]).


Результаты печатаются на [[стандартный вывод]], по одному файлу на строку, если с помощью опции -C не задан многоколоночный вывод. Однако при выводе на [[Интерфейс командной строки|терминал]] не определено, будет ли вывод осуществляться в одну колонку или в несколько. Для задания одноколоночного или многоколоночного режима вывода могут использоваться опции -1<!-- тут нужен дефис, а не минус! --> и -C, соответственно.
Результаты печатаются на [[стандартный вывод]], по одному файлу на строку, если с помощью опции -C не задан многоколоночный вывод. Однако при выводе на [[Интерфейс командной строки|терминал]] не определено, будет ли вывод осуществляться в одну колонку или в несколько. Для задания одноколоночного или многоколоночного режима вывода могут использоваться опции −1<!-- тут нужен дефис, а не минус! --> и -C, соответственно.


Получить список каталогов в текущем каталоге можно при помощи команды:
Получить список каталогов в текущем каталоге можно при помощи команды:
Строка 58: Строка 58:


=== Ключи [[GNU]] ===
=== Ключи [[GNU]] ===
−1, --format=single-column — выдавать один файл на строку. Эта опция включается по умолчанию, если стандартный вывод не является терминалом.
−1, --format=single-column — выдавать один файл на строку. Эта опция включается по умолчанию, если стандартный вывод не является терминалом.


-a, --all — выдавать все файлы в каталогах, включая скрытые файлы, начинающиеся с точки.
-a, --all — выдавать все файлы в каталогах, включая скрытые файлы, начинающиеся с точки.


-b, --escape, --quoting-style=escape — Заменять неграфические символы в именах файлов, используя алфавитно-цифровые последовательности, а также последовательности вида -Q, за исключением того, что имена файлов не заключаются в двойные кавычки.
-b, --escape, --quoting-style=escape — Заменять неграфические символы в именах файлов, используя алфавитно-цифровые последовательности, а также последовательности вида -Q, за исключением того, что имена файлов не заключаются в двойные кавычки.


-c, --time=ctime, --time=status — сортировать содержимое каталога в соответствии с временем изменения состояния файла (поле `ctime' в inode). Если с помощью опции -l задан длинный формат, то выдавать время изменения состояния файла вместо времени его модификации.
-c, --time=ctime, --time=status — сортировать содержимое каталога в соответствии с временем изменения состояния файла (поле `ctime' в inode). Если с помощью опции -l задан длинный формат, то выдавать время изменения состояния файла вместо времени его модификации.


-d, --directory — выдавать имена каталогов, как будто они обычные файлы, вместо того, чтобы показывать их содержимое.
-d, --directory — выдавать имена каталогов, как будто они обычные файлы, вместо того, чтобы показывать их содержимое.


-f — не сортировать содержимое каталога; выдавать файлы в том порядке, в котором они записаны на диск. Эта опция также разрешает -a и -U и запрещает -l, --color, -s, и -t, если они были заданы перед -f.
-f — не сортировать содержимое каталога; выдавать файлы в том порядке, в котором они записаны на диск. Эта опция также разрешает -a и -U и запрещает -l, --color, -s, и -t, если они были заданы перед -f.


-g — игнорируется; нужна для совместимости с [[Unix]].
-g — игнорируется; нужна для совместимости с [[Unix]].


-h, --human-readable — добавлять к каждому размеру файла букву размера, например, M для двоичных [[мегабайт]] (`[[мебибайт]]'). (Новое в fileutils-4.0.)
-h, --human-readable — добавлять к каждому размеру файла букву размера, например, M для двоичных [[мегабайт]] (`[[мебибайт]]'). (Новое в fileutils-4.0.)


-i, --inode — выдавать номер [[inode]] (также называемый серийным номером файла и номером индекса) каждого файла, слева от его имени. (Этот номер однозначно идентифицирует каждый файл в каждой файловой системе)
-i, --inode — выдавать номер [[inode]] (также называемый серийным номером файла и номером индекса) каждого файла, слева от его имени. (Этот номер однозначно идентифицирует каждый файл в каждой файловой системе)


-k, --kilobytes — если выдаются размеры файлов, то выдавать их в [[килобайт]]ах.
-k, --kilobytes — если выдаются размеры файлов, то выдавать их в [[килобайт]]ах.


-l, --format=long, --format=verbose — в дополнении к имени каждого файла, выводятся тип файла, права доступа к файлу, количество ссылок на файл, имя владельца, имя группы, размер файла в байтах и временной штамп (время последней модификации файла, если не задано другое). Для файлов с временем больше чем 6 месяцев назад или больше, чем 1 час в будущее, временной штамп содержит год вместо времени дня.
-l, --format=long, --format=verbose — в дополнении к имени каждого файла, выводятся тип файла, права доступа к файлу, количество ссылок на файл, имя владельца, имя группы, размер файла в байтах и временной штамп (время последней модификации файла, если не задано другое). Для файлов с временем больше чем 6 месяцев назад или больше, чем 1 час в будущее, временной штамп содержит год вместо времени дня.


Каждый каталог со списком содержимого предваряется строкой `total blocks', где blocks — это общее дисковое пространство, используемое всеми файлами в данном каталоге. По умолчанию, размер блока составляет 1024 байта; если установлена переменная окружения POSIXLY_CORRECT , то используется размер блока 512 байт (если не задана опция -k). blocks считает каждую жёсткую ссылку отдельно; задать по другому через аргументы невозможно.
Каждый каталог со списком содержимого предваряется строкой `total blocks', где blocks — это общее дисковое пространство, используемое всеми файлами в данном каталоге. По умолчанию, размер блока составляет 1024 байта; если установлена переменная окружения POSIXLY_CORRECT , то используется размер блока 512 байт (если не задана опция -k). blocks считает каждую жёсткую ссылку отдельно; задать по другому через аргументы невозможно.
Права доступа отображаются в практически обычном символьном виде, но ls комбинирует несколько битов в третий символ каждого набора прав доступа:
Права доступа отображаются в практически обычном символьном виде, но ls комбинирует несколько битов в третий символ каждого набора прав доступа:


* s — setuid или setgid бит установлены вместе с соответствующим битом прав на выполнение.
* s — setuid или setgid бит установлены вместе с соответствующим битом прав на выполнение.
* S — setuid или setgid бит установлены, но соответствующий бит прав на выполнение не установлен.
* S — setuid или setgid бит установлены, но соответствующий бит прав на выполнение не установлен.
* t — sticky-бит установлен вместе с битом прав на выполнение остальными.
* t — sticky-бит установлен вместе с битом прав на выполнение остальными.
* T — sticky-бит установлен, но бит прав на выполнение остальными нет.
* T — sticky-бит установлен, но бит прав на выполнение остальными нет.
* x — бит прав на выполнение установлен, и не выполняется ни одно из вышеуказанных условий.
* x — бит прав на выполнение установлен, и не выполняется ни одно из вышеуказанных условий.
* — Во всех остальных случаях.
* — Во всех остальных случаях.
-m, --format=commas — выдавать список файлов в строчку с максимально возможным количеством имён файлов на строку, разделяя имена запятой и пробелом.
-m, --format=commas — выдавать список файлов в строчку с максимально возможным количеством имён файлов на строку, разделяя имена запятой и пробелом.


-n, --numeric-uid-gid — выдавать числовые UID и GID вместо имён владельца и группы.
-n, --numeric-uid-gid — выдавать числовые UID и GID вместо имён владельца и группы.


-o — применять длинный формат, но не показывать информацию о группе. Данная опция эквивалентна --format=long --no-group и предоставляется для совместимости с другими версиями ls.
-o — применять длинный формат, но не показывать информацию о группе. Данная опция эквивалентна --format=long --no-group и предоставляется для совместимости с другими версиями ls.


-p, --file-type, --indicator-style=file-type — добавлять символ, показывающий тип файла, к каждому имени файла. Данная опция похожа на -F, за исключением того, что исполняемые файлы не помечаются. (Фактически в fileutils-4.0 опция --file- type эквивалентна --classify.)
-p, --file-type, --indicator-style=file-type — добавлять символ, показывающий тип файла, к каждому имени файла. Данная опция похожа на -F, за исключением того, что исполняемые файлы не помечаются. (Фактически в fileutils-4.0 опция --file- type эквивалентна --classify.)


-q, --hide-control-chars — выдавать знаки вопроса вместо неграфических символов в имени файла. Эта опция включена по умолчанию.
-q, --hide-control-chars — выдавать знаки вопроса вместо неграфических символов в имени файла. Эта опция включена по умолчанию.


-r, --reverse — сортировать содержимое каталога в обратном порядке.
-r, --reverse — сортировать содержимое каталога в обратном порядке.


-s, --size — выдавать размер каждого файла в блоках по 1024 байта слева от имени файла. Если установлена переменная окружения POSIXLY_COR- RECT, то применяется размер блока 512, если не задана опция -k .
-s, --size — выдавать размер каждого файла в блоках по 1024 байта слева от имени файла. Если установлена переменная окружения POSIXLY_COR- RECT, то применяется размер блока 512, если не задана опция -k .


-t, --sort=time — сортировать по времени последней модификации (поле `mtime' в inode) вместо того, чтобы производить сортировку по алфавиту. Самые свежие файлы будут отображаться первыми.
-t, --sort=time — сортировать по времени последней модификации (поле `mtime' в inode) вместо того, чтобы производить сортировку по алфавиту. Самые свежие файлы будут отображаться первыми.


-u, --time=atime, --time=access, --time=use — сортировать по времени последнего доступа к файлу, вместо времени последней модификации (поле `atime' в [[inode]]). Если задан длинный формат вывода, выдавать время последнего доступа вместо времени последней модификации.
-u, --time=atime, --time=access, --time=use — сортировать по времени последнего доступа к файлу, вместо времени последней модификации (поле `atime' в [[inode]]). Если задан длинный формат вывода, выдавать время последнего доступа вместо времени последней модификации.


-v — производить сортировку в соответствии с номером версии файлов. При этом учитывается, что имена файлов часто содержат номера версий или порядковые номера. Стандартные функции сортировки обычно не обеспечивают сортировку, которую мог бы ожидать человек, так как сортировка производится на основе посимвольного сравнения. Сортировка по версиям решает эту проблему и особенно полезна, когда производится просмотр каталогов, содержащих много файлов, у которых в имени есть номер версии. Например:
-v — производить сортировку в соответствии с номером версии файлов. При этом учитывается, что имена файлов часто содержат номера версий или порядковые номера. Стандартные функции сортировки обычно не обеспечивают сортировку, которую мог бы ожидать человек, так как сортировка производится на основе посимвольного сравнения. Сортировка по версиям решает эту проблему и особенно полезна, когда производится просмотр каталогов, содержащих много файлов, у которых в имени есть номер версии. Например:
<pre>
<pre>
> ls -1 > ls -1v
> ls -1 > ls -1v
Строка 123: Строка 123:
abc-1.01a.tgz abc-1.012b.tgz</pre>
abc-1.01a.tgz abc-1.012b.tgz</pre>


-w, --width cols — назначает вывод на экран в cols колонок. По умолчанию, если это возможно, данное значение узнается от драйвера терминала; в противном случае используется значение переменной окружения COLUMNS, если она установлена; в противном случае, по умолчанию, устанавливается 80.
-w, --width cols — назначает вывод на экран в cols колонок. По умолчанию, если это возможно, данное значение узнается от драйвера терминала; в противном случае используется значение переменной окружения COLUMNS, если она установлена; в противном случае, по умолчанию, устанавливается 80.


-x, --format=across, --format=horizontal — выдавать список файлов в многоколоночном режиме, с сортировкой по горизонтали.
-x, --format=across, --format=horizontal — выдавать список файлов в многоколоночном режиме, с сортировкой по горизонтали.


-A, --almost-all — выдавать все файлы, кроме `.' и `..'.
-A, --almost-all — выдавать все файлы, кроме `.' и `..'.


-B, --ignore-backups — не показывать файлы, которые заканчиваются на `~', если они не заданы в командной строке.
-B, --ignore-backups — не показывать файлы, которые заканчиваются на `~', если они не заданы в командной строке.


-C, --format=vertical — выдавать файлы в многоколоночном режиме, с сортировкой по вертикали. Опция устанавливается по умолчанию, если стандартный вывод является терминалом. Данная опция всегда устанавливается по умолчанию для программ dir и d.
-C, --format=vertical — выдавать файлы в многоколоночном режиме, с сортировкой по вертикали. Опция устанавливается по умолчанию, если стандартный вывод является терминалом. Данная опция всегда устанавливается по умолчанию для программ dir и d.


-D, --dired — при длинном формате (-l), после основного вывода, выдавать дополнительную строку вида: //DIRED// BEG1 END1 BEG2 END2 …
-D, --dired — при длинном формате (-l), после основного вывода, выдавать дополнительную строку вида: //DIRED// BEG1 END1 BEG2 END2 …


Здесь BEGn и ENDn — это целые беззнаковые числа, которые для каждой записи показывают байтовую позицию начала и конца каждого имени файла. Таким образом, [[Emacs]] может легко найти имена, даже когда они содержат необычные символы, такие как пробелы или символы новой строки.
Здесь BEGn и ENDn — это целые беззнаковые числа, которые для каждой записи показывают байтовую позицию начала и конца каждого имени файла. Таким образом, [[Emacs]] может легко найти имена, даже когда они содержат необычные символы, такие как пробелы или символы новой строки.


Если каталоги отображаются рекурсивно (-R), то похожая строка выводится после каждого подкаталога: //SUBDIRED// BEG1 END1 …
Если каталоги отображаются рекурсивно (-R), то похожая строка выводится после каждого подкаталога: //SUBDIRED// BEG1 END1 …


-F, --classify, --indicator-style=classify — добавлять к каждому имени файла символ, показывающий его тип. Для обычных исполняемых файлов это `*'. Для каталога добавляется `/', для FIFO — `|', для символических ссылок `@', для гнёзд `=', для обычных файлов ничего не добавляется.
-F, --classify, --indicator-style=classify — добавлять к каждому имени файла символ, показывающий его тип. Для обычных исполняемых файлов это `*'. Для каталога добавляется `/', для FIFO — `|', для символических ссылок `@', для гнёзд `=', для обычных файлов ничего не добавляется.


-G, --no-group — не отображать информацию о группе в длинном формате вывода.
-G, --no-group — не отображать информацию о группе в длинном формате вывода.


-H, --si — делает то же, что и опция -h, но использует официальные единицы измерения [[СИ]] (где для расчётов используется 1000 вместо 1024 и, таким образом, M — это 1000000 вместо 10485576). (Новое в fileutils-4.0.)
-H, --si — делает то же, что и опция -h, но использует официальные единицы измерения [[СИ]] (где для расчётов используется 1000 вместо 1024 и, таким образом, M — это 1000000 вместо 10485576). (Новое в fileutils-4.0.)


-I, --ignore=шаблон — не показывать файлы, имена которых совпадают с заданным шаблоном (шаблон — это не регулярное выражение), если только они не заданы в командной строке. Как и в shell, начальная `.' в имени файла не совпадает с символом `*', заданным в начале шаблона.
-I, --ignore=шаблон — не показывать файлы, имена которых совпадают с заданным шаблоном (шаблон — это не регулярное выражение), если только они не заданы в командной строке. Как и в shell, начальная `.' в имени файла не совпадает с символом `*', заданным в начале шаблона.


-L, --dereference — выдавать информацию о файлах, на которые указывают символические ссылки, вместо информации о самих символических ссылках.
-L, --dereference — выдавать информацию о файлах, на которые указывают символические ссылки, вместо информации о самих символических ссылках.


-N, --literal — не заключать в кавычки имена файлов.
-N, --literal — не заключать в кавычки имена файлов.


-Q, --quote-name, --quoting-style=c — заключать имена файлов в двойные кавычки и показывать неграфические символы как в языке [[С]].
-Q, --quote-name, --quoting-style=c — заключать имена файлов в двойные кавычки и показывать неграфические символы как в языке [[Си (язык программирования)|С]].


-R, --recursive — рекурсивно выдавать список содержимого всех каталогов.
-R, --recursive — рекурсивно выдавать список содержимого всех каталогов.


-S, --sort=size — производить сортировку по размеру файла, вместо сортировки по алфавиту. Таким образом, наибольшие файлы будут показаны сначала.
-S, --sort=size — производить сортировку по размеру файла, вместо сортировки по алфавиту. Таким образом, наибольшие файлы будут показаны сначала.


-T, --tabsize cols — назначить ширину табуляции в cols колонок. По умолчанию 8, может быть также задано с помощью переменной окружения TABSIZE, если при этом не установлена переменная окружения POSIXLY_CORRECT. ls использует табуляцию для выравнивания вывода, когда это возможно. Если cols равно нулю, то табуляция не используется.
-T, --tabsize cols — назначить ширину табуляции в cols колонок. По умолчанию 8, может быть также задано с помощью переменной окружения TABSIZE, если при этом не установлена переменная окружения POSIXLY_CORRECT. ls использует табуляцию для выравнивания вывода, когда это возможно. Если cols равно нулю, то табуляция не используется.
-U, --sort=none — Не производить сортировку; список файлов будет выдаваться в том порядке, в каком файлы записаны на диск. (отличие между опциями -U и -f состоит в том, что данная опция не запрещает и не разрешает другие опции). Эта опция может быть особенно полезна, когда выдаются списки содержимого очень больших каталогов, при этом сортировка не выполняется и весь процесс происходит быстрее).
-U, --sort=none — Не производить сортировку; список файлов будет выдаваться в том порядке, в каком файлы записаны на диск. (отличие между опциями -U и -f состоит в том, что данная опция не запрещает и не разрешает другие опции). Эта опция может быть особенно полезна, когда выдаются списки содержимого очень больших каталогов, при этом сортировка не выполняется и весь процесс происходит быстрее).


-X, --sort=extension — производить сортировку в алфавитном порядке по расширениям файлов (символы после последней `.'); файлы без расширений будут показаны первыми.
-X, --sort=extension — производить сортировку в алфавитном порядке по расширениям файлов (символы после последней `.'); файлы без расширений будут показаны первыми.


--block-size=size — выдаёт размеры в блоках по size байт. (Новое в fileutils-4.0.)
--block-size=size — выдаёт размеры в блоках по size байт. (Новое в fileutils-4.0.)


--color[=when] — задаёт цвет для различения типов файлов. Цвета задаются с использованием переменной окружения LS_COLORS. Информацию о том, как нужно задавать значение этой переменной, можно найти в странице руководства [1]dircolors(1). Параметр when может бы опущен или принимать одно из следующих значений:
--color[=when] — задаёт цвет для различения типов файлов. Цвета задаются с использованием переменной окружения LS_COLORS. Информацию о том, как нужно задавать значение этой переменной, можно найти в странице руководства [1]dircolors(1). Параметр when может бы опущен или принимать одно из следующих значений:
* none — вообще не использовать цвет. Установлено по умолчанию.
* none — вообще не использовать цвет. Установлено по умолчанию.
* auto — использовать цвет, только если стандартный вывод является терминалом.
* auto — использовать цвет, только если стандартный вывод является терминалом.
* always — всегда использовать цвет. Задание --color без параметра when эквивалентно --color=always.
* always — всегда использовать цвет. Задание --color без параметра when эквивалентно --color=always.


--full-time — выдавать время в полном, а не в стандартном сокращённом варианте. Данный формат выглядит так же, как и в команде [[date]] по умолчанию; его невозможно изменить, но вы може извлечь строку с датой через команду [[cut]] и пропусти результат через `date -d'. Это может быть очень полезно, потому что время в таком формате включает секунды. (Файловые системы Unix записывают временной штамп файла с округлением до секунды, так что данная опция показывает полную информацию о временном штампе). Например, это может помочь, если вы разбираетесь, почему некий [[Makefile]] неправильно перегенерирует файлы.
--full-time — выдавать время в полном, а не в стандартном сокращённом варианте. Данный формат выглядит так же, как и в команде [[date]] по умолчанию; его невозможно изменить, но вы може извлечь строку с датой через команду [[cut]] и пропусти результат через `date -d'. Это может быть очень полезно, потому что время в таком формате включает секунды. (Файловые системы Unix записывают временной штамп файла с округлением до секунды, так что данная опция показывает полную информацию о временном штампе). Например, это может помочь, если вы разбираетесь, почему некий [[Makefile]] неправильно перегенерирует файлы.


--quoting-style=word — используйте стиль word для выбора режима квотинга имён файлов. Стиль word может принимать следующие значения:
--quoting-style=word — используйте стиль word для выбора режима квотинга имён файлов. Стиль word может принимать следующие значения:
* literal — вывод имён файлов как есть. Это поведение ''ls'' по умолчанию.
* literal — вывод имён файлов как есть. Это поведение ''ls'' по умолчанию.
* shell — заключает имена файлов в одиночные кавычки для [[Оболочка операционной системы|shell]], если они содержат метасимволы или могут привести к неоднозначной выдаче.
* shell — заключает имена файлов в одиночные кавычки для [[Оболочка операционной системы|shell]], если они содержат метасимволы или могут привести к неоднозначной выдаче.
* shell-always — заключает имена файлов в одиночные кавычки для [[Оболочка операционной системы|shell]], даже если этого не требуется.
* shell-always — заключает имена файлов в одиночные кавычки для [[Оболочка операционной системы|shell]], даже если этого не требуется.
* c — заключает имена файлов в двойные кавычки, как в языке C; это равносильно опции -Q.
* c — заключает имена файлов в двойные кавычки, как в языке C; это равносильно опции -Q.
* escape — как и для c, за исключением того, что имя не заключается в двойные кавычки; эквивалентно опции -b .
* escape — как и для c, за исключением того, что имя не заключается в двойные кавычки; эквивалентно опции -b .


Значение по умолчанию для данной опции может быть задано в переменной окружения QUOTING_STYLE. (См. ниже главу Окружение).
Значение по умолчанию для данной опции может быть задано в переменной окружения QUOTING_STYLE. (См. ниже главу Окружение).


* --show-control-chars — выдавать неграфические символы в именах файлов как есть. Так задано по умолчанию, если вывод осуществляется на терминал, а программа называется ''ls''.
* --show-control-chars — выдавать неграфические символы в именах файлов как есть. Так задано по умолчанию, если вывод осуществляется на терминал, а программа называется ''ls''.


== Стандартные ключи [[GNU]] ==
== Стандартные ключи [[GNU]] ==
''--help'' — выдать подсказку на стандартный вывод и успешно завершиться.
''--help'' — выдать подсказку на стандартный вывод и успешно завершиться.


''--version'' — выдать информацию о версии на стандартный вывод и успешно завершиться.
''--version'' — выдать информацию о версии на стандартный вывод и успешно завершиться.


''--'' — служит для обозначения конца списка ключей.
''--'' — служит для обозначения конца списка ключей.


== Окружение ==
== Окружение ==
Переменная POSIXLY_CORRECT определяет размер блока. Переменная TABSIZE задаёт ширину табуляции, если не установлена переменная POSIXLY_COR- RECT. Переменная COLUMNS (когда она содержит целое число) определяет ширину вывода в колонках (для использования с опцией -C). Имена файлов не должны обрезаться, чтобы уместить их в многоколоночном выводе.
Переменная POSIXLY_CORRECT определяет размер блока. Переменная TABSIZE задаёт ширину табуляции, если не установлена переменная POSIXLY_COR- RECT. Переменная COLUMNS (когда она содержит целое число) определяет ширину вывода в колонках (для использования с опцией -C). Имена файлов не должны обрезаться, чтобы уместить их в многоколоночном выводе.


При работе обычным образом используются значения переменных LANG, LC_ALL, LC_CTYPE и LC_MESSAGES. Переменная TZ задаёт временную зону для временных меток, которые выдаёт ls. Переменная LS_COLORS используется для задания цветов.
При работе обычным образом используются значения переменных LANG, LC_ALL, LC_CTYPE и LC_MESSAGES. Переменная TZ задаёт временную зону для временных меток, которые выдаёт ls. Переменная LS_COLORS используется для задания цветов.


Переменная QUOTING_STYLE используется для задания значения по умолчанию для опции --quoting-style. Данная опция по умолчанию установлена в literal, но авторы предупреждают, что это умолчание может когда-нибудь в следующей версии измениться на shell.
Переменная QUOTING_STYLE используется для задания значения по умолчанию для опции --quoting-style. Данная опция по умолчанию установлена в literal, но авторы предупреждают, что это умолчание может когда-нибудь в следующей версии измениться на shell.


== Ошибки реализации ==
== Ошибки реализации ==
В [[BSD]] системах ''ls'' выдаёт размеры, которые являются наполовину меньше правильных, для файлов, которые смонтированы по [[Network File System|NFS]] из [[HP-UX]] систем. В [[HP-UX]] системах ''ls'' выдаёт размеры, которые в два раза больше правильных для файлов, которые смонтированы по [[Network File System|NFS]] из [[BSD]] систем. Это недостаток систем [[HP-UX]]; он также есть и в программе ''ls'' из [[HP-UX]].
В [[BSD]] системах ''ls'' выдаёт размеры, которые являются наполовину меньше правильных, для файлов, которые смонтированы по [[Network File System|NFS]] из [[HP-UX]] систем. В [[HP-UX]] системах ''ls'' выдаёт размеры, которые в два раза больше правильных для файлов, которые смонтированы по [[Network File System|NFS]] из [[BSD]] систем. Это недостаток систем [[HP-UX]]; он также есть и в программе ''ls'' из [[HP-UX]].


== Совместимость ==
== Совместимость ==

Версия от 18:37, 5 марта 2010

ls (dir, vdir) — команда Unix-подобной операционной системы, которое выводит (обычно на консоль) содержимое каталога (по умолчанию текущего).

Синтаксис

  • ls [опции] [файл…]
  • dir [файл…]
  • vdir [файл…]

Описание

Команда ls сначала выводит список всех файлов (не каталогов), перечисленных в командной строке, а затем выводит список всех файлов, находящихся в каталогах, перечисленных в командной строке. Если не указано ни одного файла, то по умолчанию аргументом назначается `.' (текущий каталог). Опция -d заставляет ls не считать аргументы-каталоги каталогами. Будут отображаться только файлы, которые не начинаются с `.' или все файлы, если задана опция -a.

Каждый список файлов (для файлов, которые не являются каталогами и для каждого каталога, содержащего список файлов) сортируется отдельно в алфавитной последовательности текущих региональных настроек (locale). Когда указана опция -l, то перед каждым списком выводится итоговая строка с общим размером всех файлов в списке, который измеряется в полу-килобайтах (512 байт).

Результаты печатаются на стандартный вывод, по одному файлу на строку, если с помощью опции -C не задан многоколоночный вывод. Однако при выводе на терминал не определено, будет ли вывод осуществляться в одну колонку или в несколько. Для задания одноколоночного или многоколоночного режима вывода могут использоваться опции −1 и -C, соответственно.

Получить список каталогов в текущем каталоге можно при помощи команды: ls -F | grep / | sed 's/\///g'

Ключи POSIX

-C — напечатать список файлов в колонках с вертикальной сортировкой.

-F — для каждого имени каталога добавлять суффикс `/', для каждого имени FIFO — `|' и для каждого имени исполняемого файла `*'.

-R — включить рекурсивную выдачу списка каталогов.

-a — включать в список файлы с именем, начинающимся с точки (показывать скрытые фаилы).

-c — использовать при сортировке (при задании опции -t или -l) время изменения состояния файла вместо времени последней модификации файла.

-d — выдавать имена каталогов, как будто они обычные файлы, вместо того, чтобы показывать их содержимое.

-i — предварять вывод для каждого файла его серийным номером (номером inode).

-l — выдавать (в одноколоночном формате) тип файла, права доступа к файлу, количество ссылок на файл, имя владельца, имя группы, размер файла (в байтах), временной штамп и имя файла.

Типы файлов могут принимать следующие значения: — для обычного файла, d для каталога, b для блочного устройства, c для символьного устройства, l для символической ссылки, p для FIFO и s для гнезда (socket).

По умолчанию, временной штамп является временем последней модификации; опции -c и -u позволяют выбрать два других временных штампа. Для файлов устройств, поле размера обычно заменяется на старший и младший номера устройства.

-q — вместо непечатаемых символов в имени файла при выводе будут ставиться знаки вопроса. (Эта опция включена по умолчанию при выводе на терминал.)

-r — производить сортировку в обратном порядке.

-t — сортировать по показываемому временному штампу.

-u — использовать при сортировке (опция -t) или перечислении (опция -l) время последнего доступа к файлу вместо времени последней модификации файла.

−1 — выдавать в одноколоночном формате.

— завершает список ключей.

Подробности версии GNU

Если стандартный вывод является терминалом, то вывод производится в многоколоночном формате (с вертикальной сортировкой).

Программа dir (также установленная под именем d) является эквивалентом `ls -C -b'; таким образом, файлы по умолчанию выдаются в многоколоночном формате (с вертикальной сортировкой). Программа vdir (также установленная под именем v) эквивалентна `ls -l -b'; таким образом, файлы по умолчанию выдаются в длинном формате.

Ключи GNU

−1, --format=single-column — выдавать один файл на строку. Эта опция включается по умолчанию, если стандартный вывод не является терминалом.

-a, --all — выдавать все файлы в каталогах, включая скрытые файлы, начинающиеся с точки.

-b, --escape, --quoting-style=escape — Заменять неграфические символы в именах файлов, используя алфавитно-цифровые последовательности, а также последовательности вида -Q, за исключением того, что имена файлов не заключаются в двойные кавычки.

-c, --time=ctime, --time=status — сортировать содержимое каталога в соответствии с временем изменения состояния файла (поле `ctime' в inode). Если с помощью опции -l задан длинный формат, то выдавать время изменения состояния файла вместо времени его модификации.

-d, --directory — выдавать имена каталогов, как будто они обычные файлы, вместо того, чтобы показывать их содержимое.

-f — не сортировать содержимое каталога; выдавать файлы в том порядке, в котором они записаны на диск. Эта опция также разрешает -a и -U и запрещает -l, --color, -s, и -t, если они были заданы перед -f.

-g — игнорируется; нужна для совместимости с Unix.

-h, --human-readable — добавлять к каждому размеру файла букву размера, например, M для двоичных мегабайт (`мебибайт'). (Новое в fileutils-4.0.)

-i, --inode — выдавать номер inode (также называемый серийным номером файла и номером индекса) каждого файла, слева от его имени. (Этот номер однозначно идентифицирует каждый файл в каждой файловой системе)

-k, --kilobytes — если выдаются размеры файлов, то выдавать их в килобайтах.

-l, --format=long, --format=verbose — в дополнении к имени каждого файла, выводятся тип файла, права доступа к файлу, количество ссылок на файл, имя владельца, имя группы, размер файла в байтах и временной штамп (время последней модификации файла, если не задано другое). Для файлов с временем больше чем 6 месяцев назад или больше, чем 1 час в будущее, временной штамп содержит год вместо времени дня.

Каждый каталог со списком содержимого предваряется строкой `total blocks', где blocks — это общее дисковое пространство, используемое всеми файлами в данном каталоге. По умолчанию, размер блока составляет 1024 байта; если установлена переменная окружения POSIXLY_CORRECT , то используется размер блока 512 байт (если не задана опция -k). blocks считает каждую жёсткую ссылку отдельно; задать по другому через аргументы невозможно. Права доступа отображаются в практически обычном символьном виде, но ls комбинирует несколько битов в третий символ каждого набора прав доступа:

  • s — setuid или setgid бит установлены вместе с соответствующим битом прав на выполнение.
  • S — setuid или setgid бит установлены, но соответствующий бит прав на выполнение не установлен.
  • t — sticky-бит установлен вместе с битом прав на выполнение остальными.
  • T — sticky-бит установлен, но бит прав на выполнение остальными нет.
  • x — бит прав на выполнение установлен, и не выполняется ни одно из вышеуказанных условий.
  •  — Во всех остальных случаях.

-m, --format=commas — выдавать список файлов в строчку с максимально возможным количеством имён файлов на строку, разделяя имена запятой и пробелом.

-n, --numeric-uid-gid — выдавать числовые UID и GID вместо имён владельца и группы.

-o — применять длинный формат, но не показывать информацию о группе. Данная опция эквивалентна --format=long --no-group и предоставляется для совместимости с другими версиями ls.

-p, --file-type, --indicator-style=file-type — добавлять символ, показывающий тип файла, к каждому имени файла. Данная опция похожа на -F, за исключением того, что исполняемые файлы не помечаются. (Фактически в fileutils-4.0 опция --file- type эквивалентна --classify.)

-q, --hide-control-chars — выдавать знаки вопроса вместо неграфических символов в имени файла. Эта опция включена по умолчанию.

-r, --reverse — сортировать содержимое каталога в обратном порядке.

-s, --size — выдавать размер каждого файла в блоках по 1024 байта слева от имени файла. Если установлена переменная окружения POSIXLY_COR- RECT, то применяется размер блока 512, если не задана опция -k .

-t, --sort=time — сортировать по времени последней модификации (поле `mtime' в inode) вместо того, чтобы производить сортировку по алфавиту. Самые свежие файлы будут отображаться первыми.

-u, --time=atime, --time=access, --time=use — сортировать по времени последнего доступа к файлу, вместо времени последней модификации (поле `atime' в inode). Если задан длинный формат вывода, выдавать время последнего доступа вместо времени последней модификации.

-v — производить сортировку в соответствии с номером версии файлов. При этом учитывается, что имена файлов часто содержат номера версий или порядковые номера. Стандартные функции сортировки обычно не обеспечивают сортировку, которую мог бы ожидать человек, так как сортировка производится на основе посимвольного сравнения. Сортировка по версиям решает эту проблему и особенно полезна, когда производится просмотр каталогов, содержащих много файлов, у которых в имени есть номер версии. Например:

           > ls -1            > ls -1v
           foo.zml-1.gz       foo.zml-1.gz
           foo.zml-100.gz     foo.zml-12.gz
           foo.zml-12.gz      foo.zml-25.gz
           foo.zml-25.gz      foo.zml-100.gz

Заметим, что цифровые части с лидирующими нулями определяются как более маленькие:

            > ls -1            > ls -1v
            abc-1.007.tgz      abc-1.007.tgz
            abc-1.012b.tgz     abc-1.01a.tgz
            abc-1.01a.tgz      abc-1.012b.tgz

-w, --width cols — назначает вывод на экран в cols колонок. По умолчанию, если это возможно, данное значение узнается от драйвера терминала; в противном случае используется значение переменной окружения COLUMNS, если она установлена; в противном случае, по умолчанию, устанавливается 80.

-x, --format=across, --format=horizontal — выдавать список файлов в многоколоночном режиме, с сортировкой по горизонтали.

-A, --almost-all — выдавать все файлы, кроме `.' и `..'.

-B, --ignore-backups — не показывать файлы, которые заканчиваются на `~', если они не заданы в командной строке.

-C, --format=vertical — выдавать файлы в многоколоночном режиме, с сортировкой по вертикали. Опция устанавливается по умолчанию, если стандартный вывод является терминалом. Данная опция всегда устанавливается по умолчанию для программ dir и d.

-D, --dired — при длинном формате (-l), после основного вывода, выдавать дополнительную строку вида: //DIRED// BEG1 END1 BEG2 END2 …

Здесь BEGn и ENDn — это целые беззнаковые числа, которые для каждой записи показывают байтовую позицию начала и конца каждого имени файла. Таким образом, Emacs может легко найти имена, даже когда они содержат необычные символы, такие как пробелы или символы новой строки.

Если каталоги отображаются рекурсивно (-R), то похожая строка выводится после каждого подкаталога: //SUBDIRED// BEG1 END1 …

-F, --classify, --indicator-style=classify — добавлять к каждому имени файла символ, показывающий его тип. Для обычных исполняемых файлов это `*'. Для каталога добавляется `/', для FIFO — `|', для символических ссылок `@', для гнёзд `=', для обычных файлов ничего не добавляется.

-G, --no-group — не отображать информацию о группе в длинном формате вывода.

-H, --si — делает то же, что и опция -h, но использует официальные единицы измерения СИ (где для расчётов используется 1000 вместо 1024 и, таким образом, M — это 1000000 вместо 10485576). (Новое в fileutils-4.0.)

-I, --ignore=шаблон — не показывать файлы, имена которых совпадают с заданным шаблоном (шаблон — это не регулярное выражение), если только они не заданы в командной строке. Как и в shell, начальная `.' в имени файла не совпадает с символом `*', заданным в начале шаблона.

-L, --dereference — выдавать информацию о файлах, на которые указывают символические ссылки, вместо информации о самих символических ссылках.

-N, --literal — не заключать в кавычки имена файлов.

-Q, --quote-name, --quoting-style=c — заключать имена файлов в двойные кавычки и показывать неграфические символы как в языке С.

-R, --recursive — рекурсивно выдавать список содержимого всех каталогов.

-S, --sort=size — производить сортировку по размеру файла, вместо сортировки по алфавиту. Таким образом, наибольшие файлы будут показаны сначала.

-T, --tabsize cols — назначить ширину табуляции в cols колонок. По умолчанию 8, может быть также задано с помощью переменной окружения TABSIZE, если при этом не установлена переменная окружения POSIXLY_CORRECT. ls использует табуляцию для выравнивания вывода, когда это возможно. Если cols равно нулю, то табуляция не используется. -U, --sort=none — Не производить сортировку; список файлов будет выдаваться в том порядке, в каком файлы записаны на диск. (отличие между опциями -U и -f состоит в том, что данная опция не запрещает и не разрешает другие опции). Эта опция может быть особенно полезна, когда выдаются списки содержимого очень больших каталогов, при этом сортировка не выполняется и весь процесс происходит быстрее).

-X, --sort=extension — производить сортировку в алфавитном порядке по расширениям файлов (символы после последней `.'); файлы без расширений будут показаны первыми.

--block-size=size — выдаёт размеры в блоках по size байт. (Новое в fileutils-4.0.)

--color[=when] — задаёт цвет для различения типов файлов. Цвета задаются с использованием переменной окружения LS_COLORS. Информацию о том, как нужно задавать значение этой переменной, можно найти в странице руководства [1]dircolors(1). Параметр when может бы опущен или принимать одно из следующих значений:

  • none — вообще не использовать цвет. Установлено по умолчанию.
  • auto — использовать цвет, только если стандартный вывод является терминалом.
  • always — всегда использовать цвет. Задание --color без параметра when эквивалентно --color=always.

--full-time — выдавать время в полном, а не в стандартном сокращённом варианте. Данный формат выглядит так же, как и в команде date по умолчанию; его невозможно изменить, но вы може извлечь строку с датой через команду cut и пропусти результат через `date -d'. Это может быть очень полезно, потому что время в таком формате включает секунды. (Файловые системы Unix записывают временной штамп файла с округлением до секунды, так что данная опция показывает полную информацию о временном штампе). Например, это может помочь, если вы разбираетесь, почему некий Makefile неправильно перегенерирует файлы.

--quoting-style=word — используйте стиль word для выбора режима квотинга имён файлов. Стиль word может принимать следующие значения:

  • literal — вывод имён файлов как есть. Это поведение ls по умолчанию.
  • shell — заключает имена файлов в одиночные кавычки для shell, если они содержат метасимволы или могут привести к неоднозначной выдаче.
  • shell-always — заключает имена файлов в одиночные кавычки для shell, даже если этого не требуется.
  • c — заключает имена файлов в двойные кавычки, как в языке C; это равносильно опции -Q.
  • escape — как и для c, за исключением того, что имя не заключается в двойные кавычки; эквивалентно опции -b .

Значение по умолчанию для данной опции может быть задано в переменной окружения QUOTING_STYLE. (См. ниже главу Окружение).

  • --show-control-chars — выдавать неграфические символы в именах файлов как есть. Так задано по умолчанию, если вывод осуществляется на терминал, а программа называется ls.

Стандартные ключи GNU

--help — выдать подсказку на стандартный вывод и успешно завершиться.

--version — выдать информацию о версии на стандартный вывод и успешно завершиться.

-- — служит для обозначения конца списка ключей.

Окружение

Переменная POSIXLY_CORRECT определяет размер блока. Переменная TABSIZE задаёт ширину табуляции, если не установлена переменная POSIXLY_COR- RECT. Переменная COLUMNS (когда она содержит целое число) определяет ширину вывода в колонках (для использования с опцией -C). Имена файлов не должны обрезаться, чтобы уместить их в многоколоночном выводе.

При работе обычным образом используются значения переменных LANG, LC_ALL, LC_CTYPE и LC_MESSAGES. Переменная TZ задаёт временную зону для временных меток, которые выдаёт ls. Переменная LS_COLORS используется для задания цветов.

Переменная QUOTING_STYLE используется для задания значения по умолчанию для опции --quoting-style. Данная опция по умолчанию установлена в literal, но авторы предупреждают, что это умолчание может когда-нибудь в следующей версии измениться на shell.

Ошибки реализации

В BSD системах ls выдаёт размеры, которые являются наполовину меньше правильных, для файлов, которые смонтированы по NFS из HP-UX систем. В HP-UX системах ls выдаёт размеры, которые в два раза больше правильных для файлов, которые смонтированы по NFS из BSD систем. Это недостаток систем HP-UX; он также есть и в программе ls из HP-UX.

Совместимость

POSIX 1003.2