Как использовать команду ls для вывода списка файлов и каталогов в Linux

Мы используем команду Linux ls каждый день, не задумываясь об этом. Какая жалость. Уделите ему немного внимания, и вы найдете много полезных опций, в том числе те, которые вам следует добавить в свой арсенал командной строки.

ls перечисляет файлы и каталоги

Команда ls, вероятно, первая команда, с которой сталкивается большинство пользователей Linux. Те из нас, кто пользуется командной строкой, используют ее изо дня в день, даже не задумываясь об этом. Это может объяснить, почему в этой команде есть нечто большее, чем думает большинство пользователей. Мы перечисляем файлы с ним, чтобы увидеть, что находится в каталоге. Мы перечисляем файлы в длинном формате, когда хотим посмотреть права доступа к файлу. Кроме того, этому мало внимания.

Команда ls — одна из тех команд с множеством опций. Возможно, это часть проблемы. Вариантов так много, как вы их просматриваете, чтобы найти полезные? И, найдя их, как их запомнить?

Полезные перестановки команды ls с их строками опций и параметров являются идеальными кандидатами для псевдонимов. Фактически, в большинстве дистрибутивов то, что вы называете «голой» командой ls, на самом деле является псевдонимом. Помимо прочего, команду type можно использовать для показать основное определение псевдонимов. Давайте посмотрим на определение ls:

тип ls

введите ls в окне терминала

Параметры –color = auto включаются автоматически каждый раз, когда вы используете команду ls. Это то, что обеспечивает разные цвета для разных типов файлов в списках.

Простые листинги ls

Каждый, кто какое-то время пользовался терминалом Linux, знает, что по умолчанию ls перечисляет файлы и каталоги в текущем каталоге.

ls

ls в окне терминала

Если вы хотите, чтобы ваш список отображался в одном столбце, используйте параметр -1 (один файл в строке):

ls -1

ls -1 в окне терминала

Мы обсудим это странно выглядящее имя файла в верхней части списка через минуту.

Использование ls в разных каталогах

Чтобы ls отображал файлы в каталоге, отличном от текущего, передайте путь к каталогу команде ls в командной строке. Вы также можете передать более одного каталога в ls, и они будут перечислены один за другим. Здесь мы просим ls перечислить файлы в двух каталогах, один из которых называется «Help», а другой — «gc_help».

ls Help gc_help

ls Help gc_help в окне терминала

Когда ls перечисляет содержимое первого каталога, он перечисляет содержимое второго. Он печатает имя каждого каталога по мере их обработки:

  5 лучших дистрибутивов Linux для игр

Имя каталога, отображаемого ls перед выводом содержимого.

Использование шаблонов файлов

Чтобы выборочно перечислить набор файлов, используйте сопоставление с образцом. Знак вопроса «?» будет представлять любой отдельный символ, а звездочка «*» будет представлять любую строку символов. Чтобы перечислить любые файлы или каталоги, имена которых начинаются с «ip_», используйте следующий формат:

ls ip_*

ls ip_ * в окне терминала

Чтобы вывести список файлов с расширением «.c», используйте следующий формат:

ls *.c

ls * .c в окне терминала

Вы также можете использовать ls с grep и использовать grep возможности сопоставления с образцом. Давайте поищем любые файлы, в названии которых есть строка «_pin_»:

ls | grep _pin_

ls |  grep _pin_ в окне терминала

Это почти то же самое, что и использование ls отдельно, с двумя подстановочными знаками:

ls | grep _pin_
ls *_pin_*

ls |  grep _pin_ в окне терминала

Почему почти то же самое? Обратите внимание на разные макеты. grep заставляет вывод использовать одно имя файла в формате строки.

Непечатаемые символы

Можно обнаружить, что имя файла имеет непечатаемый или управляющий символ в его имени файла. Обычно это может произойти, когда вы расширяете архив, который вы скачали из Интернета или извлекаете из репозитория git, и исходный автор допустил ошибку при создании файла, но не заметил ее.

Наш странный файл — один из таких:

Имя файла с управляющим символом в окне терминала

Если мы посмотрим на него в браузере файлов и нажмем «F2», чтобы переименовать его, непечатаемые символы будут представлены странным символом.

Имя файла с управляющим символом в диалоговом окне переименования

Вы можете использовать опцию -b (escape), чтобы увидеть, что на самом деле содержит имя файла. Эта опция заставляет ls использовать escape-последовательности Язык программирования C для представления управляющих символов.

ls -b a*

ls -ba * в окне терминала

Таинственный символ оказывается символом новой строки, представленным в C как «n».

Игнорирование файлов

Чтобы определенные файлы были исключены из списка, используйте параметр –hide. Предположим, вы не хотите видеть резервные файлы «.bak» в списке. Вы можете использовать эту команду:

ls
ls --hide=*.bak

ls --hide = *. bak в окне терминала

Файлы «.bak» не включены во второй список.

Листинг в длинном формате

Параметр -l (длинный список) заставляет ls предоставлять подробную информацию о каждом файле.

ls -l

ls -l в окне терминала

Здесь много информации, так что давайте рассмотрим ее подробнее.

Первое, что отображает ls, — это общий размер всех файлов в списке. Затем каждый файл или каталог отображается в отдельной строке.

Первый набор из десяти букв и тире — это тип файла, а также владелец, группа и другие права доступа к файлу.

Самый первый символ представляет тип файла. Это будет один из:

-: обычный файл.
b: специальный файл блока.
c: специальный символьный файл.
d: Каталог.
l: символическая ссылка.
n: сетевой файл.
p: именованный канал.
s: розетка.

Следующие девять символов представляют собой три группы по три символа, отображаемых подряд. Каждая группа из трех представляет разрешения на чтение, запись и выполнение в указанном порядке. Если разрешение предоставлено, будет присутствовать r, w или x. Если разрешение не предоставлено, отображается дефис -.

  Как сделать резервную копию вашего профиля Geary Mail в Linux

Первый набор из трех символов — это разрешения для владельца файла. Второй набор из трех разрешений предназначен для членов группы, а последний набор из трех разрешений — для других.

Иногда разрешение на выполнение для владельца представлено буквой s. Это Setuid немного. Если он присутствует, это означает, что файл выполняется с привилегиями владельца файла, а не пользователя, выполняющего файл.

Разрешение на выполнение для группы также может быть s. Это Setgid немного. Когда это применяется к файлу, это означает, что файл будет выполнен с привилегиями группы владельца. При использовании с каталогом любые файлы, созданные внутри него, будут получать свои групповые разрешения из каталога, в котором они создаются, а не от пользователя, который создает файл.

Разрешение на выполнение для остальных иногда может быть представлено буквой t. Это липкий кусочек. Обычно применяется к каталогам. Если он установлен, независимо от прав записи и выполнения, установленных для файлов в каталоге, только владелец файла, владелец каталога или пользователь root могут переименовывать или удалять файлы в каталоге.

Обычно липкий бит используется в таких папках, как «/ tmp». Это доступно для записи всем пользователям компьютера. Бит залипания в каталоге гарантирует, что пользователи и процессы, запущенные пользователями, могут переименовывать или удалять только свои временные файлы.

Мы видим липкий бит в каталоге «/ tmp». Обратите внимание на использование параметра -d (каталог). Это заставляет ls сообщать подробную информацию о каталоге. Без этой опции ls будет сообщать о файлах внутри каталога.

ls -l -d /tmp

ls -l -d / tmp в окне терминала

Число после разрешений — это количество жестких ссылок на файл или каталог. Для файла это обычно один, но если создаются другие жесткие ссылки, это число будет увеличиваться. В каталоге обычно есть как минимум две жесткие ссылки. Один является ссылкой на себя, а другой — его записью в родительском каталоге.

Далее отображаются имя владельца и группа. За ними следует размер файла и дата последнего изменения файла. Наконец, дается имя файла.

Удобочитаемые размеры файлов

Не всегда удобно указывать размеры файлов в байтах. Чтобы увидеть размеры файлов в наиболее подходящих единицах (килобайтах, мегабайтах и ​​т. Д.), Используйте параметр -h (удобочитаемый):

ls -l -h

ls -l -h в окне терминала

Отображение скрытых файлов

Чтобы увидеть скрытые файлы, используйте параметр -a (все):

ls -l -a

ls -l -a в окне терминала

Две записи «.» и «..» представляют текущий каталог и родительский каталог соответственно. Файл с именем «.base_settings» теперь отображается впервые.

Опуская. и .. из списков

Если вы не хотите, чтобы ваше объявление было загромождено знаком «.» и «..», но вы хотите видеть скрытые файлы, используйте параметр -A (почти все):

ls -l -A

ls -l -A в окне терминала

Скрытый файл по-прежнему отображается, но с пометкой «.» и «..» подавляются.

  Как установить VMWare Workstation Pro 14 в Linux

Рекурсивный листинг каталогов

Чтобы ls отображал файлы во всех подкаталогах, используйте параметр -R (рекурсивный)

ls -l -R

ls -l -R в окне терминала

ls проходит через все дерево каталогов под начальным каталогом и перечисляет файлы в каждом подкаталоге.

вывод из ls рекурсивно перечисляет каталоги

Отображение UID и GID

Чтобы вместо имени пользователя и имени группы отображались идентификатор пользователя и идентификатор группы, используйте параметр -n (числовой uid и gid).

ls -n

ls -n в окне терминала

Сортировка объявлений

Вы можете отсортировать список по расширению, размеру файла или времени изменения. Эти параметры необязательно использовать с форматом длинного списка, но обычно это имеет смысл. Если вы выполняете сортировку по размеру файла, имеет смысл увидеть размеры файлов в списке. Когда вы сортируете по типу расширения, формат длинного списка не так важен.

Для сортировки по расширению используйте параметр -X (сортировка по расширению).

ls -X -1

ls -X -1 в окне терминала

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

Для сортировки по размеру файла используйте параметр -S (сортировка по размеру файла).

ls -l -h -S

ls -l -h -S в окне терминала

Порядок сортировки от наибольшего к наименьшему.

Чтобы отсортировать список по времени изменения, используйте параметр -t (сортировать по времени изменения).

ls -l -t

ls -l -t в окне терминала

Список отсортирован по времени модификации.

Если время изменения файла находится в пределах текущего года, отображается информация о месяце, дне и времени. Если дата изменения была не в текущем году, отображается информация о месяце, дне и году.

Быстрый способ получить самые новые и самые старые файлы в каталоге — использовать ls с командами head и tail.

Чтобы получить самый новый файл или каталог, используйте эту команду:

ls -t | head -1

Чтобы получить самый старый файл или каталог, используйте эту команду:

ls -t | tail -1

ls -t |  head -1 в окне терминала

Чтобы изменить порядок сортировки

Чтобы отменить любой из порядков сортировки, используйте параметр -r (обратный).

ls -l -h -S -r

ls -l -h -S -r в окне терминала

Список теперь упорядочен от самого маленького файла до самого большого файла.

И есть еще

Просмотрите страницу руководства по ls, есть еще много вариантов. Некоторые из них удовлетворяют несколько неясным вариантам использования, но время от времени вы будете рады, что узнали о них.

Вам нужно видеть временные метки файлов с максимальной точностью, которую может предоставить Linux? Воспользуйтесь опцией очного обучения:

ls --full-time

Возможно, вы хотите увидеть номера inode файлов? Используйте опцию inode:

ls -i

Вы работаете с монохромным дисплеем и хотите исключить риск спутать файлы с каталогами и ссылками? Используйте опцию classify, и ls добавит один из них к каждой записи списка:

/: Каталог.
@: Символическая ссылка.
|: Именованный канал.
=: Сокет.
*: Исполняемые файлы

ls -F

Покопайся. Вы обнаружите, что ls — богатая жила, и будете продолжать находить драгоценные камни.