Разработка командной оболочки с поддержкой конвейера (pipeline)
Евстратов Виталий Владимирович, студент
Камчатский государственный технический университет (г. Петропавловск-Камчатский)
В данной статье говорится об особенностях разработки командной оболочки (shell) для UNIX систем. Приводятся блок-схемы
работы основных алгоритмов работы командной оболочки. Подробно разбирается реализация конвейера (pipeline).
Ключевые слова: shell, командная оболочка, pipeline, конвейер, UNIX, разработка
Введение
В вычислительной технике оболочка операционной си-
стемы — программа, предоставляющая интерфейс для взаимо-
действия пользователя с функциями системы. В общем случае
оболочки операционной системы используют либо интерфейс
командной строки CLI (command line interface), либо графиче-
ский пользовательский интерфейс GUI (graphical user interface).
Оболочки командной строки требуют, чтобы пользователь
был знаком с командами и их синтаксисом вызова, а также по-
нимал понятия о специфичном для оболочки языке сценариев
(например, bash).
Графические оболочки создают низкую нагрузку на начина-
ющих пользователей компьютеров и характеризуются простотой
в использовании. Поскольку они также имеют определенные не-
достатки, большинство операционных систем с поддержкой гра-
фического интерфейса также предоставляют оболочки CLI.
В профессиональной среде программистов считается, что
умение пользоваться командной строкой является необхо-
димым для наиболее гибкой и тонкой настройки и эксплуа-
тации персонального компьютера. Особенно это касается опе-
рационных систем семейств UNIX/GNU.
В данной статье будет рассмотрен процесс создания обо-
лочки командной строки, включающий в себя базовый функци-
онал (подробнее о нем ниже) популярной оболочки bash.
Разрабатываемый функционал
В данной статье будет показан принцип работы:
1. выполнение программ в зависимости от пути в ОС до них;
2. выполнение команд, встроенных в командную оболочку;
3. обработка конвейера (pipeline, «|»);
Основная идея
Поскольку главная цель командной оболочки — интерак-
тивное предоставление инструкций и данных операционной
системе, то простейший цикл выполнения команды будет вы-
глядеть как на рисунке 1.
Процесс считывание команды полностью приводить неце-
лесообразно, поскольку существует много нюансов обработки
вводимых символов: разделители («;», «|», «&&», «||»), два типа
кавычек (одинарные и двойные), специальные символы («$»,
«?», «*»), экранирование специальных символов и прочее.
Стоит сказать, однако, что после выполнения блока Read
command мы должны получить структуру, в которой хранятся
данные о названии команды, её аргументы, и необходимо ли ре-
зультат команды передавать в конвейер (pipeline).
Достарыңызбен бөлісу: |