Поиск по сайту:

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


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

ls выводит список файлов и каталогов

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

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

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

введите лс

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

Простые списки ls

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

ls

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

ls -1

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

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

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

ls Help gc_help

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

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

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

ls ip_*

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

ls *.c

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

ls | grep _pin_

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

ls | grep _pin_
ls *_pin_*

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

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

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

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

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

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

ls -b a*

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

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

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

ls
ls --hide=*.bak

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

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

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

ls -l

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

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

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

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

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

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

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

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

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

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

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

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

ls -l -d /tmp

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

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

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

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

ls -l -h

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

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

ls -l -a

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

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

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

ls -l -A

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

Список каталогов рекурсивно

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

ls -l -R

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

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

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

ls -n

Сортировка списков

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

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

ls -X -1

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

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

ls -l -h -S

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

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

ls -l -t

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

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

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

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

ls -t | head -1

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

ls -t | tail -1

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

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

ls -l -h -S -r

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

И это еще не все

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

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

ls --full-time

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

ls -i

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

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

ls -F

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

RELATED: Best Linux Laptops for Developers and Enthusiasts