Як використовувати команду ls для відображення списку файлів і каталогів у Linux

Ми використовуємо команду 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 перерахувати файли в двох каталогах, один з яких називається «Довідка», а інший — «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

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

І є ще

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

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

ls --full-time

Можливо, ви хочете побачити номер inode файлів? Використовуйте параметр inode:

ls -i

Ви працюєте над монохромним дисплеєм і хочете усунути ризики переплутати файли для каталогів і посилань? Використовуйте параметр класифікації, і ls додасть одне з них до кожного запису в списку:

/: Довідник.
@: символьне посилання.
|: Іменована труба.
=: Розетка.
*: виконувані файли

ls -F

Покопайте. Ви побачите, що ls – це багата жила, і ви будете продовжувати знаходити дорогоцінні камені.