Что происходит, когда вы набираете ls -l *.c и нажимаете Enter в командной строке?

В этом сообщении блога мы с Уильямом подробно расскажем о механизме и работе команды терминала, такой как ls -l *.c .

Но сначала, для самых неофитов среди вас, давайте вспомним, что такое терминал, также называемый командной строкой.
Это довольно просто, терминал — это способ взаимодействия с вашей операционной системой (Windows, Ubuntu…) через команды. Например, вы можете создавать или удалять файлы из терминала.

Команда ls -l *.c — это более сложная команда, которую мы попытаемся объяснить.
В первой части этой статьи будет рассмотрено использование этой команды, чтобы вы поняли ее суть. полезности, во второй части будет подробно описана механика, с помощью которой компьютер интерпретирует вашу команду и возвращает ожидаемый результат.

Итак, что делает ls -l *.c?

Как мы уже говорили, ls -l *.c — это команда. Но в чем ее польза?
Чтобы лучше понять, давайте распакуем команду, потому что да, она состоит из нескольких компонентов;

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

Элементы, следующие за командой ls, называются опциями. Они позволяют вам расширить команду для более точного запроса.

Параметр -l позволяет отображать элементы в виде списка с дополнительной информацией.

Параметр *.c использует регулярное выражение *, за которым следует .c. * — это подстановочный знак, который может состоять из любого количества символов.

Таким образом, ввод команды ls -l *.c в терминале позволяет вывести список всех файлов, имена которых заканчиваются на .c.

Какую механику выполняет компьютер при вводе команды

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

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

На самом деле команда ls — это тоже программа, которая по умолчанию находится в папках вашего компьютера. Таким образом, основная функция терминальной программы заключается в выполнении команды (также программы), которую вы ей отправляете.
Для этого терминал будет действовать шаг за шагом;

  1. Терминал извлечет и сохранит введенную команду в терминале, в нашем случае ls -l *.c.
  2. Второй шаг — сегментация команды терминалом. Терминал должен понимать, что команда включает опции. Для этого терминал построен так, чтобы понимать, что когда после команды вводится пробел, это означает, что последующая опция является опцией.
  3. Завершающим этапом является выполнение команды. Мы указываем выполнение, потому что, как упоминалось выше, команда — это тоже программа. Терминал выполнит поиск программы в файлах на вашем компьютере и выполнит программный код ls.

Идти дальше по выполнению команды

Как упоминалось выше, ваш терминал представляет собой программу. Когда мы вводим ls -l *.c, мы запускаем другую программу. Итак, у нас работает программа… другая программа.

Для этого терминал должен создать то, что называется «дочерним», для которого он является «родителем». Этот потомок является своего рода дублированием родителя, что позволяет создать экземпляр родителя, в котором выполняется команда.

Это позволяет вернуться к родителю (терминалу), когда дочерний элемент (команда) завершил свое выполнение, и вернуть ожидаемый результат пользователю.

Мы подходим к концу нашей статьи. Мы искренне надеемся, что теперь понятия терминала и команды, особенно ls -l *.c, стали для вас более понятными.

Оставайтесь с нами на этой учетной записи для новых статей в ближайшее время.

До скорой встречи.

Аксель и Уильям