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

ls -l на поверхности:

Одна из первых команд, представленных во многих языках программирования, «ls».

это короткая аббревиатура для списка файлов в текущем рабочем каталоге. Ввод и передача уникального « ls » в CLI отображает файлы в чистом формате. Голый формат не показывает много информации.

Чтобы отобразить больше информации о файлах, «ls» можно комбинировать с несколькими параметрами для отображения дополнительных сведений, таких как «ls-l».

Теперь с помощью « ls -l » вы можете перечислить файлы в длинном формате, отображая разрешения, типы файлов, количество жестких ссылок, владельца, группу, размер, дату последнего изменения и имя файла.

Что происходит под капотом при вводе ls — l в оболочке?

Разобьем процесс возбуждения этой команды на этапы:

1-й: Оболочка распечатывает приглашение и ждет ввода пользователя, который в данном случае будет командой ls-l.

2-й: оболочка читает команду ls -l с функцией getline STDIN.

3-й: Оболочка ищет программный файл, соответствующий команде, обычно это подкаталог, расположенный внутри «/usr» («/usr/bin/ls»).

4-й: Для выполнения команды «ls» выполняются три системных вызова «fork/execve/wait».

  • fork(): fork — это системный вызов, который создает дочерний процесс родительского процесса.
  • execve(): загрузите файл программы, в данном случае « ls », заменив дублированный вновь созданный дочерний процесс и запустите новую программу.
  • wait(): этот системный вызов отвечает за поддержание работы родительского процесса до тех пор, пока один из его дочерних процессов не завершится.

5-й: после выполнения команды память будет освобождена и будет выполнено новое приглашение.

Сценарий: Таха Язиди и Сейф Джелиди.