Интерпретатор командной строки
В предыдущей части мы с Вами изучили один из важнейших способов
вызова наиболее часто используемых утилит и команд IS-DOS - вызов по
специальным клавишам. Однако, далеко не всегда есть смысл определять
клавишу для той или иной команды, ведь некоторые команды бывают нужны
довольно редко, а под все утилиты со всеми возможными комбинациями
параметров клавиш просто не хватит. Поэтому для организации
оперативного обращения к системе в ней предусмотрен т. н.
интерпретатор командной строки, в обязанности которого входит
считывание и передача системе команд, вводимых пользователем в
специальную область памяти, называемую "буфером командной строки".
Ввод команд в этот буфер осуществляется при помощи специальной
программы - монитора командной строки, которая называется mon.com и
запускается обычно клавишей CS+m (в IS-DOS 2.0 и ниже - m). Существует
также резидентный вариант монитора - mon.res, вызываемый клавишей m и
обладающий рядом дополнительных возможностей, о которых пойдет речь
чуть позже.
Монитор командной строки открывает специальную область экрана -
окно монитора, занимающее три верхних строки. В левом верхнем углу
этой области находится мигающий курсор, такой же, как и в редакторе
текстов. Вообще, монитор командной строки представляет собой текстовый
редактор в миниатюре, только созданный текст не сохраняется в виде
файла, а передается в буфер командной строки, где и обрабатывается
интерпретатором.
Управляющие клавиши монитора:
CS+5 - курсор влево
CS+6 - курсор вниз
CS+7 - курсор вверх
CS+8 - курсор вправо
CS+0 - удалить символ слева
SS+W - удалить символ под курсором
SS+E - вставить пробел
CS+1 - режимы Pyc/Lat
CS+2 - режимы Заглавные/Строчные
CS+3 - режимы Вставка/Замена
ENTER - завершение ввода и выполнение строки
CS+9, SS+ENTER, SS+CS, SS+A, SS+SPACE - выход из монитора без
выполнения строки, содержимое буфера не сохраняется
Как Вы уже поняли, Нажатие клавиши ENTER приводит к завершению
ввода команды и запускает интерпретатор командной строки. По окончании
работы команды, как правило, Вы возвращаетесь обратно в монитор. При
этом, если команда выполнена успешно, окно редактирования очищается и
курсор устанавливается в левый верхний угол. Если в командной строке
допущена синтаксическая ошибка, например неправильно заданы параметры,
командная строка сохраняется на экране, а курсор устанавливается в
конец строки, после чего Вы получаете возможность исправить ошибку и
вновь попытаться выполнить команду, нажав ENTER, если у Вас и после
этого ничего не получится - нажмите одну из клавиш выхода и
внимательно прочтите help-файл к необходимой Вам программе.
Если при выполнении Вашей команды произойдет системная ошибка -
интерпретатор сообщит об этом в специальном окне в нижней половине
экрана, (расшифровку номеров системных ошибок см. в файле
S:HELPerror.txt), после чего, нажав любую клавишу, Вы сможете выйти в
оболочку IS-DOS и поразмышлять о причинах такого печального
результата. В случае, если система не может найти на диске нужный Вам
файл, в окне ошибок появится надпись "No filename". Если Вы вдруг
получите такое сообщение -помните, что оно не всегда означает, что
данного файла нет на диске вообще, просто укажите полный путь к нему,
т. е. в каком подкаталоге его следует искать.
При работе в мониторе командной строки, в отличие от текстового
редактора основные режимы (Pyc/Lat, Заглавные/Строчные,
Вставка/Замена) не индицируются на экране, что создает некоторые
трудности, однако проблема эта легко разрешается при помощи
специальной резидентной программы indi.res. Установите и запустите ее
командами Q:RESset Q:RESindi.res и @hidi, и Вы увидите в правом
нижнем углу окна редактирования стандартную индикацию режимов: lat -
латинские символы, рус - русские, ins - режим вставки, ovr - режим
замены, индикация режимов заглавными буквами сигнализирует о включении
режима заглавных букв.
Резидентный монитор командной строки mon.res, о котором уже
упоминалось выше, выполняет те же функции, что и mon.com, однако
обладает рядом дополнительных возможностей, значительно облегчающих
работу с командной строкой. Внутри резидентного монитора имеется
специальный буфер, размером 256 байт, в котором запоминаются команды,
введенные нажатием ENTER. Это избавляет Вас от необходимости заново
набирать текст команды, которую необходимо вызвать несколько раз.
Кроме того, Вы можете отредактировать текст команды даже в случае
системной ошибки, или ошибки "No filename". B случае выхода по
клавишам отказа, команда не запоминается и содержимое буфера остается
неизменным. Команды в буфере резидентного монитора располагаются в
порядке их ввода, образуя подобие кольцевого стека. Для перемещения по
нему в поисках нужной команды Вы можете использовать следующие
клавиши:
SS+SPACE - перейти к предыдущей команде
SS+CS, CS+9 - перейти к следующей команде
Таким образом, для вызова последней введенной команды необходимо
нажать SS+SPACE, а для вывода самой ранней из сохранившихся в буфере -
SS+CS. По мере заполнения буфера, более старые команды стираются,
содержимое стека смещается на одну строку и новая команда записывается
на его вершину. Максимальное количество запоминаемых команд зависит от
их длины и обычно составляет около 20.
Внешний вид монитора с установленной программой индикации режимов
показан на рис. 11:
Рис. 11.
Резидентный монитор имеет еще одну полезную особенность - при
нажатии клавиши SS+ENTER в текущую позицию курсора переносится имя
файла или каталога, на котором перед вызовом монитора находился курсор
файловой панели. Выход из монитора с отказом от выполнения строки,
ввиду занятости остальных клавиш осуществляется только при помощи
SS+A. Программа индикации режимов indi.res работает с резидентным
монитором так же, как и с com'овским.
Позволю себе напомнить, что при работе с резидентным монитором
категорически запрещается удалять резиденты и драйверы, установленные
раньше, чем сам mon.res, это обязательно вызовет перемещение в памяти
самого монитора и приведет к гарантированному сбою в работе. В таких
случаях пользуйтесь программой mon.com.
Теперь поговорим более подробно о командах в системе IS-DOS.
Команды бывают внутренние и внешние. Внутренними называются команды,
расположенные в теле системы. Таких команд всего пять:
L_S /n - назначить устройство n системным,
L_Q /n - назначить устройство n быстрым,
L_T /n - назначить устройство n текущим,
CAT s - сделать текущим подкаталог, описанный в строке s,
@m - запустить резидентную программу m
где n - символьное обозначение устройства (как явные -А, В, С, D,
Е, F, так и условные - S, Q, Т),
s - полный путь к необходимому подкаталогу (например:
Q;RESTRANSHELP),
m - имя, под которым установлена резидентная программа.
Примеры внутренних команд IS-DOS:
L_S /А [назначить устройство А системным]
L_Q /S [назначить быстрым то же устройство, которое назначено как
системное]
CAT S:UTILHELP [открыть (сделать текущим) каталог S:UTILHELP]
@indi - запустить резидентную программу, установленную под именем
indi
Разумеется, перед вызовом команды @ необходимо, чтобы резидентная
программа была установлена утилитой set.com.
Внешними командами в IS-DOS называются команды, подгружаемые с
диска на время их исполнения. По сути любой com'овский файл может
считаться внешней командой.
Для того, чтобы вызвать любую внешнюю команду необходимо в
командной строке набрать имя этой команды со всеми необходимыми
параметрами, не забыв указать полный путь к ней. Если команда
вызывается из текущего каталога, путь указывать не обязательно.
Примеры вызова внешних команд:
Q:UTILdiskname [вызов команды изменения имени диска]
Q:SHELLexebat T:SERVICEBLKraml28.bat [вызов интерпретатора
bat-файлов и исполнение файла raml28.bat]
Q:RESset Q:RESmon.res /e [удаление резидентной программы
mon.res]
set mon.res /е[то же, если на текущей панели открыт каталог
RES]
Q:UTILdate [вызов программы установки текущей даты]
date [то же, если на текущей панели открыт каталог UTIL]