Если пользователю Linux требуется получить информацию о содержимом текущей директории в процессе работы с интерфейсом командной строки системы, он наверняка воспользуется командой ls. Это команда, которая по умолчанию выводит имена файлов из текущей директории в алфавитном порядке.
Хотя данная команда на первый взгляд и кажется крайне простой, она имеет огромное количество дополнительных возможностей (доступных посредством различных параметров), которые могут оказаться полезными в определенных обстоятельствах. В данной статье мы будем обсуждать приемы использования некоторых из этих параметров и иллюстрировать их с помощью простых для понимания примеров.
1. Вывод имен скрытых файлов/директорий
По умолчанию команда не отображает имена скрытых файлов и директорий. Однако, вы можете активировать механизм вывода информации об этих элементах файловой системы с помощью параметра -a. Таким образом, для вывода имен всех файлов/директорий из текущей директории (включая скрытые файлы и директории, имена которых начинаются с символа точки ".") достаточно выполнить следующую команду:
ls -a
2. Удаление информации о текущей (.) и родительской (..) директориях из вывода
При использовании параметра -a, кроме всего прочего, осуществляется вывод информации о текущей и родительской директориях (элементы "." и ".." соответственно). Если вам не нужна эта информация, вы можете использовать вместо упомянутого параметра параметр -A.
3. Вывод информации о файлах и директориях в обратном порядке
По умолчанию ls сортирует имена файлов и директорий в алфавитном порядке. Но если вам понадобится, вы можете организовать вывод имен элементов директории в обратном порядке. Для этого вам придется использовать параметр -r.
ls -r
А это пример вывода:
4. Сортировка имен файлов по расширениям
Для сортировки имен файлов в алфавитном порядке по расширениям следует использовать параметр -X.
ls -X
Это приведенная команда в действии:
При рассмотрении приведенной выше иллюстрации несложно заметить, что файл с именем "echo" и расширением ".c" расположен в выводе перед файлом с именем "byzanz_window" и расширением ".py".
5. Сортировка элементов директории по времени модификации
Если вам нужно узнать, какие файлы или директории были недавно модифицированы, вы можете использовать параметр -t команды ls.
ls -t
В случае использования параметра -t первыми выводятся имена самых новых элементов файловой системы.
6. Рекурсивный вывод элементов поддиректорий
Если вам нужно, вы можете использовать команду ls для вывода информации также и об элементах поддиректорий текущей директории. Для этой цели используется параметр -R.
ls -R
Это приведенная выше команда в действии:
7. Вывод имен файлов с информацией о соответствующих структурах inode
Команда ls также позволяет вам выводить имена файлов/директорий вместе с номерами соответствующих структур inode. Для использования этой возможности предусмотрен параметр -i.
ls -i
Команда в действии:
Очевидно, что на иллюстрации выше в столбцах слева приведены числа, являющиеся номерами структур inode, а в столбцах справа - соответствующие имена файлов/директорий.
8. Вывод подробной информации о файлах и директориях
Команда ls также может выводить подробную информацию о файлах и директориях. Для активации данного режима вывода (также известного, как "long listing format" или "широкий формат") вам придется использовать параметр -l.
Как видно на иллюстрации выше, вывод состоит из 8 столбцов. А это информация о содержимом каждого из столбцов:
Первый столбец содержит информации о правах доступа к элементу директории
Второй столбец содержит количество жестких ссылок на элемент директории
Третий и четвертый столбцы содержат имена пользователя и группы пользователей, владеющих элементом директории
Пятый столбец содержит размер элемента директории
Шестой и седьмой столбцы содержат дату и время модификации элемента директории
Последний, восьмой столбец содержит имя элемента директории
9. Вывод имени автора файла
Вы можете воспользоваться специальным параметром команды ls для вывода имени автора каждого из файлов в процессе вывода подробной информации о содержимом директории. Это параметр --author, который должен быть скомбинирован с параметром -l.
ls -l --author
Как видно на иллюстрации выше, новый, пятый столбец содержит имя автора файла.
Примечание: на официальном веб-сайте проекта GNU по этому поводу сказано следующее: "В системе GNU/Hurd имена авторов файлов могут отличаться от имен их владельцев, в других же системах они совпадают".
10. Вывод экранирующих последовательностей в стиле C для специальных символов (таких, как символ перехода на новую строки и символ пробела)
Предположим, что текущая директория содержит файл, в имени которого содержится символ перехода на новую строку. Если вы попытаетесь вывести список содержимого директории, вы увидите, что в имени этого файла присутствует знак вопроса (?), который обозначает непечатаемый символ.
Однако, команда ls поддерживает параметр, который может использоваться в данном случае, а именно, параметр, который позволяет вывести экранирующую последовательность в стиле C для непечатаемых символов. Этим параметром является параметр -b.
При рассмотрении приведенной выше иллюстрации становится очевидным, что в результате использования параметра -b в имени рассматриваемого файла появляется экранирующая последовательность "\n". Аналогично, в данном режиме символы пробела заменяются на экранирующую последовательность символов "\[пробел]".
11. Вывод размеров файлов в единицах, отличных от байтов
Если вам потребуется узнать размер файла, вы наверняка воспользуетесь параметром -l (предназначенным для активации механизма вывода подробной информации о файлах и директориях), который уже обсуждался три раздела назад. По умолчанию размер файлов выводится в байтах. Однако, бывают ситуации, в которых вам может потребоваться вывести размер файлов в килобайтах или мегабайтах.
Команда ls поддерживает параметр, позволяющий указать единицы измерения, которые должны использоваться при выводе размера файлов. Этим параметром является параметр --block-size. Например, если вам нужно, чтобы размер файлов выводился в килобайтах, вы можете воспользоваться следующей командой:
ls -l --block-size=k [имя-файла]
Помните о том, что при использовании параметра -l выводится реальный размер файла, то есть, количество данных. содержащихся в нем. Если же вам нужно знать размер файла в файловой системе или размер зарезервированного для его хранения пространства (да, эти размеры могут отличаться), вам придется использовать параметр -s.
ls -s --block-size=k [имя-файла]
Если вас интересует дополнительная информация о различиях в размерах файлов в случае использования параметров -l и -s, вы можете ознакомиться с материалом, доступным по данной ссылке.
12. Вывод лишь имен и размеров файлов и директорий
Если вы хотите, чтобы вывод команды ls содержал только имена файлов/директорий и их размеры, вы можете использовать параметр -h в комбинации с параметром -l/-s.
Например:
ls -s -h
13. Удаление информации о файлах резервных копий из вывода
В Linux файлы резервных копий содержат в конце своих имен символ тильды (~). Команда ls поддерживает параметр -B, который позволяет не включать файлы резервных копий в вывод в том случае, если такие файлы не интересуют пользователя.
Например, на приведенной ниже иллюстрации показан вывод двух команд ls. В результате исполнения первой команды выводится имя файла резервной копии, а второй (с параметром -B) - не выводится.
14. Вывод информации о типах файлов
По умолчанию выводимые имена элементов директории раскрашиваются в разные цвета в зависимости от их типов. Однако, если вам нужно, вы можете активировать режим добавления индикаторов (используемых для тех же целей) в вывод. Для этой цели предназначен параметр -F.
Это пример вывода команды:
Обратите внимание на дополнительный символ "/" после имени директории "example", а также дополнительный символ "*" после имени исполняемого файла "test". Это полный список индикаторов с информацией об их значениях:
@ указывает на символьную ссылку
* указывает на исполняемый файл
= указывает на файл сокета
| указывает на файл именованного программного канала
Если вам понадобится, вы также сможете изменить формат вывода команды ls. Параметр --format позволяет сделать это. Данный параметр требует явного указания названия формата вывода, который вам нужен. Доступны форматы вывода со следующими названиями: "verbose" или "long", "commas", "horizontal" или "across", "vertical" и "single-column".
Например, вы можете использовать параметр --format=commas, если хотите получить список из разделенных с помощью запятых имен файлов:
По аналогии параметр --format=single-column может использоваться в случае необходимости в выводе имен файлов в одном столбце:
16. Сокрытие имен файлов определенного типа
При желании, вы также можете убрать из вывода команды ls имена файлов определенного типа. Параметр --hide (который предусматривает обязательную передачу шаблона имен файлов командной оболочки) позволяет сделать это. Например, если вам нужно, чтобы в выводе отсутствовали имена файлов с расширением .txt, вы должны выполнить следующую команду:
ls --hide=*.txt
На иллюстрации ниже показан вывод команды ls без каких-либо параметров и с параметром --hide.
Заключение
Хотя ls и является крайне простой командой, эффективность ее использования зависит от того, насколько хорошо пользователь знаком с поддерживаемыми ею параметрами. Испытайте рассмотренные выше параметры самостоятельно, а в случае возникновения каких-либо сомнений или вопросов сразу же обращайтесь к соответствующей странице руководства.