Что происходит, когда вы набираете ls -l в оболочке

В этом посте мы попытаемся понять, как работает команда ls с флагом -l, как ее использовать и что происходит внутри.

Что такое оболочка?

Когда мы говорим о командной строке, мы на самом деле имеем в виду оболочку. Оболочка — это программа, которая принимает команды с клавиатуры и передает их операционной системе для выполнения. Почти все дистрибутивы Linux содержат программу-оболочку из проекта GNU, которая называется bash. Название «bash» является аббревиатурой от «Bourne Again Shell», отсылка к тому факту, что bash является расширенной заменой sh, оригинальной программы-оболочки Unix, написанной Стивом Борном.

Для чего лс?

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

Команда ls имеет несколько флагов, один из них — флаг -l, и он используется для вывода списка в формате длинного списка:

Что отображается в длинном формате? Первый символ в строке может быть d или -, если это объявление, это означает, что это каталог, в противном случае «-» используется, буквы после первых символов — это разрешения, которые файл имеет для пользователя, группового пользователя и других.

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

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

За капотом.

Чтобы команда Unix заработала, должно произойти несколько вещей, и мы рассмотрим их шаг за шагом теперь, когда мы поняли, что такое оболочка и что делает команда ls.

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

Затем отделите информацию, которую вы даете. После этого будет выполняться поиск в списке окружения для PATH.

Вы можете распечатать список окружения, набрав printenv в консоли.

Затем он просматривает все значения PATH, если есть исполняемый файл команды, объединяющий путь и команду, которую вы только что набрали.

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