Читайте также: |
|
Управление вычислительной системой осуществляется вводом определенных команд управления. Команды подчиняются некоторому синтаксису и семантике. Синтаксис (правила ввода команд и ее параметров - операндов) и их семантика (смысл, т.е. что команда будет выполнять в зависимости от значений параметров) определяются командным языком (КЯ). На этом языке, по крайней мере, задают имена программ, которые необходимо выполнить.
На низшем уровне командного языка определяются конструкции, являющиеся ответами на приглашение (prompt) ОС. Обычно это идентификаторы программ с их параметрами. Принято идентификатор программ в КЯ называть командой, ибо она будет исполняться. На этом уровне команды вводятся с так называемой командной строки.
Часто возникает необходимость многократно повторять одни и те же команды, может быть с некоторыми модификациями в параметрах. ОС позволяет записать такую последовательность в специальный файл, называемой командным файлом (КФ). Это уже следующий уровень языка. Он включает и команды (операторы) самого КЯ, например переход на ту или иную строку командного файла. Операторы КЯ исполняются пользовательским интерфейсом, а не ОС.
Требования к командному языку:
- возможность вызова программ для их исполнения. Команда в этом случае воспринимается как имя файла с программой;
- возможность задавать параметры для команды и в первую очередь имена и расположения файлов, с которыми программа должна работать;
- комплектования команд в командный файл (КФ), исполняемый в пакетном режиме;
- в командном языке для КФ должна быть возможность обхода программ в зависимости от кода возврата программы.
Команды языка либо принадлежат самому языку - команды перехода, команды манипулирования параметрами, команды комментариев, команды самой операционной системы, либо задают имена программ для выполнения.
Развитые командные языки должны:
- вызывать с возвратом другие КФ с передачей им параметров;
- формировать параметры в вызываемый КФ в зависимости от кодов возврата предыдущих программ и командных файлов;
- осуществлять передачи управления не только вперед, но и назад для обеспечения циклов, в том числе и вложенных, обеспечивая структурный подход;
- иметь рабочие поля для переменных и констант, значения в которых можно вычислять операторами командного языка и выполняемыми программами, приближая КЯ к языкам программирования. Это уже будут командные процедуры, а не рядовые командные файлы.
К такому мощному командному языку приближается язык SHELL ОС UNIX, но он достаточно сложен для непрофессионала.
В MS-DOS командный файл называют пакетным (.bat от batch - пачка). Начиная с версии, 3.30 командный язык MS-DOS позволяет:
- вызвать другой.bat- файл командой CALL;
- подставить в команду параметры вызова.bat-файла с помощью символов %1-%9;
- управлять выводом на экран команд и комментариев с помощью ECHO OFF/ON и очищать экран командой CLS;
- помещать комментарии командой REM;
- приостанавливать выполнение КФ до нажатия любой клавиши с помощью команды PAUSE;
- осуществлять скачок по КФ вперед и назад с помощью команды GOTO;
- выполнять команду (в т.ч. GOTO) в зависимости от некоторых условий командой IF: по коду завершения программы, по результату сравнения строки с параметром, по существованию файла, по ложности условия;
- выполнять ряд команд в цикле командой FOR.
В MS-DOS 6.0 появилась возможность переходить по значению, переданному из механизма меню исполнителя CONFIG.SYS.
В OS/2 используется вместо ВАТ файла файл СМD. OS/2 позволяет ВАТ файлы конвертировать в файлы типа CMD. КЯ расширен по сравнению с MS DOS. В частности:
- разрешается раздельно переопределять потоки ввода/вывода (символы <,>) с указанием номера файла, например, стандартный вывод вместо экрана в один файл, а стандартный вывод ошибок в другой файл;
- организовывать каналы между программами (символ |);
- задавать в одной строке несколько команд;
- определять временные дисковод, каталог и параметры окружающей среды, отменяя на время команду PATH из AUTOEXEC;
- реализован многозадачный режим использования печатного устройства (команда SPOOL);
- запускать программу в фоновом режиме (команда DETACH).
Канал между программами связывает данные, созданные одной программой, с получением этих данных в другой программе. Это специальный тип переопределения вывода одной программы и ввода другой программы на канал. Фактически вместо двух команд образуется единая команда, называемая конвейером. Например, в следующей строке
PR1; PR2 | PR3
PR1 определяет одну программу, заданную в одной строке с конвейером из двух программ PR2 и PR3.
В ОС UNIX используется КЯ SHELL. Он включает все возможности КЯ MS DOS, OS/2 и многих других КЯ. В действительности MS DOS и OS/2 заимствовали возможности КЯ SHELL. Вот некоторые операторы КЯ SHELL.
Конструкция case позволяет исполнить только одну группу команд, соответствующих значению операнда в операторе case. С помощью case можно обратиться одним идентификатором к группе команд, а это уже некоторый новый язык. Типичный вид применения case:
case слово in
шаблон) команды;;
шаблон) команды;;
....
esac
В операторе case слово сравнивается поочередно со всеми шаблонами от начала до конца и выполняются команды, связанные с первым шаблоном, соответствующим слову. Шаблоны составляются по правилам, которые в некоторой степени обобщают правила задания имен файлов.
Операторы for, while и until позволяют выполнить группу команд в цикле. Группа команд заключается между do и done.
Оператор цикла for содержит список слов. На каждом цикле в тело цикла передается следующее слово из списка. Обычно это имя файла. Цикл заканчивается после выбора последнего слова. Формат цикла:
for i in список слов
do
тело цикла
done
Вместо i подставляется слово.
Операторы while и until в качестве операнда содержат команду, т.е. имя некоторой программы, которая должна возвращать код завершения. Если использован оператор while, то тело цикла будет выполняться до первого ненулевого кода завершения. Оператор until будет выполнять тело цикла, пока код завершения не будет равен 0. Формат этих циклов:
while команда | until команды |
do | do |
тело цикла | тело цикла |
done | done |
Оператор trap позволяет указать те команды (программы), которые должны быть выполнены при возникновении тех или иных сигналов. Происходит прерывание выполнения процессов и исполняются команды в trap.
Оператором news можно передать сообщения для всех пользователей системы, когда они будут входить в систему.
Операторы get и put позволяют иметь одну версию файла и только изменения к нему. Оператор get выделяет версию из файла истории, а put - заносит новую версию в файл истории.
Дата добавления: 2015-10-02; просмотров: 313 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример функций СУФ в MS DOS | | | Интерпретатор командной строки |