Мы используем команду Linux ls каждый день, не задумываясь об этом. Какая жалость. Уделите ему немного внимания, и вы найдете много полезных опций, в том числе те, которые вам следует добавить в свой арсенал командной строки.
Оглавление
ls перечисляет файлы и каталоги
Команда ls, вероятно, первая команда, с которой сталкивается большинство пользователей Linux. Те из нас, кто пользуется командной строкой, используют ее изо дня в день, даже не задумываясь об этом. Это может объяснить, почему в этой команде есть нечто большее, чем думает большинство пользователей. Мы перечисляем файлы с ним, чтобы увидеть, что находится в каталоге. Мы перечисляем файлы в длинном формате, когда хотим посмотреть права доступа к файлу. Кроме того, этому мало внимания.
Команда ls — одна из тех команд с множеством опций. Возможно, это часть проблемы. Вариантов так много, как вы их просматриваете, чтобы найти полезные? И, найдя их, как их запомнить?
Полезные перестановки команды ls с их строками опций и параметров являются идеальными кандидатами для псевдонимов. Фактически, в большинстве дистрибутивов то, что вы называете «голой» командой ls, на самом деле является псевдонимом. Помимо прочего, команду type можно использовать для показать основное определение псевдонимов. Давайте посмотрим на определение ls:
тип ls
Параметры –color = auto включаются автоматически каждый раз, когда вы используете команду ls. Это то, что обеспечивает разные цвета для разных типов файлов в списках.
Простые листинги ls
Каждый, кто какое-то время пользовался терминалом Linux, знает, что по умолчанию ls перечисляет файлы и каталоги в текущем каталоге.
ls
Если вы хотите, чтобы ваш список отображался в одном столбце, используйте параметр -1 (один файл в строке):
ls -1
Мы обсудим это странно выглядящее имя файла в верхней части списка через минуту.
Использование ls в разных каталогах
Чтобы ls отображал файлы в каталоге, отличном от текущего, передайте путь к каталогу команде ls в командной строке. Вы также можете передать более одного каталога в ls, и они будут перечислены один за другим. Здесь мы просим ls перечислить файлы в двух каталогах, один из которых называется «Help», а другой — «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 файлов? Используйте опцию inode:
ls -i
Вы работаете с монохромным дисплеем и хотите исключить риск спутать файлы с каталогами и ссылками? Используйте опцию classify, и ls добавит один из них к каждой записи списка:
/: Каталог.
@: Символическая ссылка.
|: Именованный канал.
=: Сокет.
*: Исполняемые файлы
ls -F
Покопайся. Вы обнаружите, что ls — богатая жила, и будете продолжать находить драгоценные камни.