Операционная система Unix. Интерпретатор командной строки (shell)

Детские товары 15.07.2019
Детские товары

BAT Расширение файла: .bat, .cmd (только Windows NT) Тип формата: Скриптовый язык программирования Пакетный файл (англ. batch file) текстовый файл в OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным … Википедия

- (от англ. shell оболочка) интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы. В общем случае, различают оболочки с двумя типами интерфейса для взаимодействия с… … Википедия

Оболочка операционной системы (от англ. shell оболочка) интерпретатор команд операционной системы (ОС), обеспечивающий интерфейс для взаимодействия пользователя с функциями системы. В общем случае, различают оболочки с двумя типами интерфейса для … Википедия

Оболочка операционной системы (от англ. shell оболочка) интерпретатор команд операционной системы (ОС), обеспечивающий интерфейс для взаимодействия пользователя с функциями системы. В общем случае, различают оболочки с двумя типами интерфейса для … Википедия

Генеалогическое древо UNIX систем UNIX (читается юникс) семейство переносимых, многозадачных и многопользовательских … Википедия

Генеалогическое древо UNIX систем UNIX (читается юникс) группа переносимых, многозадачных и многопользовательских операционных систем. Первая система UNIX была разработана в 1969 г. в подразделении Bell Labs компании AT T. С тех пор было создано … Википедия

Генеалогическое древо UNIX систем UNIX (читается юникс) группа переносимых, многозадачных и многопользовательских операционных систем. Первая система UNIX была разработана в 1969 г. в подразделении Bell Labs компании AT T. С тех пор было создано … Википедия

Генеалогическое древо UNIX систем UNIX (читается юникс) группа переносимых, многозадачных и многопользовательских операционных систем. Первая система UNIX была разработана в 1969 г. в подразделении Bell Labs компании AT T. С тех пор было создано … Википедия

Драйверы символьных устройств

При вводе команды поток символов в первую очередь интерпретируется драйвером символьного устройства. Какой именно драйвер работает, в каждом случае зависит от используемого оборудования (более подробные сведения см. в «Описании программы. Часть 1. Справочник по утилитам» КПДА.10964-01 13 01).

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

Режимы ввода

Драйверы устройств символьного ввода/вывода могут функционировать либо в режиме необрабатываемых ("сырых") входных данных (raw input mode), либо в каноническом режиме (canonical mode), или режиме редактируемых входных данных (edited input mode). В режиме "сырых" входных данных все символы передаются приложению по мере их ввода. В режиме редактируемых входных данных приложение получает символы только после завершения ввода всей строки (о чем, как правило, свидетельствует символ возврата каретки).

Поддержка терминалов

Некоторым программам (например, vi) требуется информация о том, какие действия может выполнять ваш терминал (возможно ли перемещение курсора, очистка экрана и т. д.). Переменная окружения TERM указывает на тип используемого терминала, а каталог /usr/lib/terminfo представляет собой базу данных терминалов. В этом каталоге содержится набор подкаталогов (от a до z), в которых хранится информация для соответствующего терминала. Некоторые приложения вместо каталога /usr/lib/terminfo используют каталог /etc/termcap, представляющий собой устаревшую однофайловую модель базы данных.

Терминалом по умолчанию является qansi-m (QNX-версия терминала ANSI). Более подробные сведения об установке типа терминала см. в подразд. "Типы терминалов" раздела 9.

Служба telnet

При использовании сетевой службы telnet для связи между двумя QNX-машинами (под управлением QNX 4 или QNX Neutrino), для активизации восьмибитового тракта данных следует задавать параметр -8. Если вы подключаетесь к машине с QNX Neutrino из машины, управляемой какой-либо другой ОС, и терминал при этом не работает надлежащим образом, завершите telnet и запустите эту утилиту снова с параметром -8.

Примечание . При запуске telnet из ОС Windows пользуйтесь режимом ansi или vt100, в зависимости от типа терминала.

Общие сведения о клавиатуре

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

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

Аннотация: Рассматриваются внутренние команды, поддерживаемые интерпретатором Cmd.exe, и наиболее часто используемые внешние команды (утилиты командной строки). Описываются механизмы перенаправления ввода/вывода, конвейеризации и условного выполнения команд. Даются примеры команд для работы с файловой системой

Оболочка командной строки Windows. Интерпретатор Cmd.exe

В операционной системе Windows , как и в других операционных системах, интерактивные (набираемые с клавиатуры и сразу же выполняемые) команды выполняются с помощью так называемого командного интерпретатора, иначе называемого командным процессором или оболочкой командной строки ( command shell ). Командный интерпретатор или оболочка командной строки - это программа , которая, находясь в оперативной памяти, считывает набираемые вами команды и обрабатывает их. В Windows 9x, как и в MS-DOS , командный интерпретатор по умолчанию был представлен исполняемым файлом command . com . Начиная с версии Windows NT, в операционной системе реализован интерпретатор команд Cmd.exe, обладающий гораздо более мощными возможностями.

Запуск оболочки

В Windows NT/2000/XP файл Cmd.exe, как и другие исполняемые файлы, соответствующие внешним командам операционной системы, находятся в каталоге %SystemRoot%\SYSTEM32 (значением переменной среды %SystemRoot% является системный каталог Windows, обычно C:\Windows или C:\WinNT). Для запуска командного интерпретатора (открытия нового сеанса командной строки) можно выбрать пункт Выполнить… (Run) в меню Пуск (Start), ввести имя файла Cmd.exe и нажать кнопку OK. В результате откроется новое окно (см. рис. 2.1), в котором можно запускать команды и видеть результат их работы.


Рис. 2.1.

Внутренние и внешние команды. Структура команд

Некоторые команды распознаются и выполняются непосредственно самим командным интерпретатором - такие команды называются внутренними (например, COPY или DIR ) Другие команды операционной системы представляют собой отдельные программы, расположенные по умолчанию в том же каталоге, что и Cmd.exe, которые Windows загружает и выполняет аналогично другим программам. Такие команды называются внешними (например, MORE или XCOPY ).

Рассмотрим структуру самой командной строки и принцип работы с ней. Для того, чтобы выполнить команду, вы после приглашения командной строки (например, C:\> ) вводите имя этой команды (регистр не важен), ее параметры и ключи (если они необходимы) и нажимаете клавишу . Например:

C:\>COPY C:\myfile.txt A:\ /V

Имя команды здесь - COPY , параметры - C:\myfile.txt и A:\ , а ключом является /V . Отметим, что в некоторых командах ключи могут начинаться не с символа /, а с символа – (минус), например, -V .

Многие команды Windows имеют большое количество дополнительных параметров и ключей, запомнить которые зачастую бывает трудно. Большинство команд снабжено встроенной справкой, в которой кратко описываются назначение и синтаксис данной команды. Получить доступ к такой справке можно путем ввода команды с ключом / ?. Например, если выполнить команду ATTRIB / ?, то в окне MS-DOS мы увидим следующий текст:

Отображение и изменение атрибутов файлов. ATTRIB [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[диск:][путь]имя_файла] + Установка атрибута. - Снятие атрибута. R Атрибут "Только чтение". A Атрибут "Архивный". S Атрибут "Системный". H Атрибут "Скрытый". /S Обработка файлов во всех вложенных папках указанного пути.

Для некоторых команд текст встроенной справки может быть довольно большим и не умещаться на одном экране. В этом случае помощь можно выводить последовательно по одному экрану с помощью команды MORE и символа конвейеризации |, например:

В этом случае после заполнения очередного экрана вывод помощи будет прерываться до нажатия любой клавиши. Кроме того, используя символы перенаправления вывода > и >> , можно текст, выводимый на экран, направить в текстовый файл для дальнейшего просмотра. Например, для вывода текста справки к команде XCOPY в текстовый файл xcopy.txt, используется следующая команда:

XCOPY /? > XCOPY.TXT

Замечание

Вместо имени файла можно указывать обозначения устройств компьютера. В Windows поддерживаются следующие имена устройств: PRN (принтер), LPT1 –LPT3 (соответствующие параллельные порты), AUX (устройство, присоединяемое к последовательному порту 1), COM1–COM3 (соответствующие последовательные порты), CON (терминал: при вводе это клавиатура, при выводе - монитор), NUL (пустое устройство, все операции ввода/вывода для него игнорируются).

Перенаправление ввода/вывода и конвейеризация (композиция) команд

Рассмотрим более подробно поддерживаемые в Windows UNIX-подобные концепции переназначения устройств стандартного ввода/вывода и конвейерного выполнения команд.

С помощью переназначения устройств ввода/вывода одна программа может направить свой вывод на вход другой или перехватить вывод другой программы, используя его в качестве своих входных данных. Таким образом, имеется возможность передавать информацию от процесса к процессу при минимальных программных издержках. Практически это означает, что для программ, которые используют стандартные входные и выходные устройства, операционная система позволяет:

  • выводить сообщения программ не на экран (стандартный выходной поток), а в файл или на принтер (перенаправление вывода);
  • читать входные данные не с клавиатуры (стандартный входной поток), а из заранее подготовленного файла (перенаправление ввода);
  • передавать сообщения, выводимые одной программой, в качестве входных данных для другой программы (конвейеризация или композиция команд).

Из командной строки эти возможности реализуются следующим образом. Для того, чтобы перенаправить текстовые сообщения, выводимые какой-либо командой, в текстовый файл, нужно использовать конструкцию

команда > имя_файла

Если при этом заданный для вывода файл уже существовал, то он перезаписывается (старое содержимое теряется), если не существовал - создается. Можно также не создавать файл заново, а дописывать информацию, выводимую командой, в конец существующего файла. Для этого команда перенаправления вывода должна быть задана так:

команда >> имя_файла

С помощью символа < можно прочитать входные данные для заданной команды не с клавиатуры, а из определенного (заранее подготовленного) файла:

команда < имя_файла

Приведем несколько примеров перенаправления ввода/вывода.

  1. Вывод встроенной справки для команды COPY в файл copy.txt:

    COPY /? > copy.txt

  2. Добавление текста справки для команды XCOPY в файл copy.txt:

    XCOPY /? >> copy.txt

  3. Ввод новой даты из файла date.txt (DATE - это команда для просмотра и изменения системной даты):

    DATE < date.txt

Если при выполнении определенной команды возникает ошибка, то сообщение об этом по умолчанию выводится на экран. В случае необходимости сообщения об ошибках (стандартный поток ошибок) можно перенаправить в текстовый файл с помощью конструкции

команда 2> имя_файла

В этом случае стандартный вывод будет производиться в файл. Также имеется возможность информационные сообщения и сообщения об ошибках выводить в один и тот же файл. Делается это следующим образом:

По умолчанию команды пакетного файла перед исполнением выводятся на экран, что выглядит не очень эстетично. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). Например,

REM Следующие две команды будут дублироваться на экране … DIR C:\ ECHO OFF REM А остальные уже не будут DIR D:\

Для восстановления режима дублирования используется команда ECHO ON. Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:

ECHO ON REM Команда DIR C:\ дублируется на экране DIR C:\ REM А команда DIR D:\ - нет @DIR D:\

Таким образом, если поставить в самое начало файла команду

@ECHO OFF

то это решит все проблемы с дублированием команд.

В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды

ECHO сообщение

Например,

@ECHO OFF ​ECHO Привет!

Команда ECHO. (точка должна следовать непосредственно за словом "ECHO") выводит на экран пустую строку.

Часто бывает удобно для просмотра сообщений, выводимых из пакетного файла, предварительно полностью очистить экран командой CLS.

Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO, в определенный текстовый файл. Например:

@ECHO OFF ECHO Привет! > hi.txt ECHO Пока! >> hi.txt

С помощью такого метода можно, скажем, заполнять файлы-протоколы с отчетом о произведенных действиях. Например:

@ECHO OFF REM Попытка копирования XCOPY C:\PROGRAMS D:\PROGRAMS /s REM Добавление сообщения в файл report.txt в случае REM удачного завершения копирования IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt

Использование параметров командной строки

При запуске пакетных файлов в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же командный файл для выполнения команд с различными параметрами.

Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*. При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9 - значения первых девяти параметров командной строки соответственно, а вместо %* - все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то "лишние" переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания:

@ECHO OFF CLS ECHO Файл %0 копирует каталог %1 в %2 XCOPY %1 %2 /S

Если запустить его из командной строки с двумя параметрами, например

Copier.bat C:\Programs D:\Backup

то на экран выведется сообщение

Файл copier.bat копирует каталог C:\Programs в D:\Backup

и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.

При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 - пустая строка.

Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:

My.bat p1 p2 p3

Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3, параметры %3 – %9 – пустые строки.

При включении расширенной обработки команд SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9.
Например, в следующей команде:

SHIFT /2

параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.

Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.
В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в следующей таблице:

Таблица 2.1. Операторы для заменяемых параметров

Операторы

Описание

Переменная %n расширяется до полного имени файла

Из переменной %n выделяется только имя диска

Из переменной %n выделяется только путь к файлу

Из переменной %n выделяется только имя файла

Из переменной %n выделяется расширение имени файла

Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла

Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение

Данные синтаксические конструкции можно объединять друг с другом, например:

%~DPn - из переменной %n выделяется имя диска и путь,
%~NXn - из переменной %n выделяется имя файла и расширение.

Рассмотрим следующий пример. Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметром Рассказ.doc (%1=Рассказ.doc). Тогда применение операторов, описанных в таблице выше, к параметру %1 даст следующие результаты:

%~F1=C:\TEXT\Рассказ.doc %~D1=C: %~P1=\TEXT\ %~N1=Рассказ %~X1=.doc %DP1=C:\TEXT\ %NX1=Рассказ.doc

Рассматриваются внутренние команды, поддерживаемые интерпретатором Cmd.exe, и наиболее часто используемые внешние команды (утилиты командной строки). Описываются механизмы перенаправления ввода/вывода, конвейеризации и условного выполнения команд. Даются примеры команд для работы с файловой системой

В ОС Windows, как и в других ОС, интерактивные (набираемые с клавиатуры и сразу же выполняемые) команды выполняются с помощью так называемого командного интерпретатора, иначе называемого командным процессором или оболочкой командной строки (command shell). Начиная с версии Windows NT, в операционной системе реализован интерпретатор команд Cmd.exe, обладающий гораздо более широкими возможностями.

1.2.1 Запуск оболочки

В Windows NT/2000/XP файл Cmd.exe, как и другие исполняемые файлы, соответствующие внешним командам ОС, находятся в каталоге %SystemRoot%\SYSTEM32 (значением переменной среды %SystemRoot% является системный каталог Windows, обычно C:\Windows или C:\WinNT). Для запуска командного интерпретатора (открытия нового сеанса командной строки) можно выбрать пункт Выполнить… (Run) в меню Пуск (Start), ввести имя файла Cmd.exe и нажать кнопку OK. В результате откроется новое окно (см. рис. 1), в котором можно запускать команды и видеть результат их работы.

Рис. 1 - Командное окно интерпретатора Cmd.exe в Windows XP

1.2.2 Настройка параметров командного окна интерпретатора

У утилиты командной строки, которая поставляется в виде стандартного приложения ОС Windows, имеется свой набор опций и параметров настройки. Один из способов просмотра этих опций – использование пункта Свойства управляющего меню окна (нажать правой кнопкой мыши на заголовок окна). В окне свойств (см. рис. 2) будут доступны четыре вкладки с опциями: общие, шрифт, расположение и цвета.

Рис. 2 – окно настройки свойств интерпретатора

1.2.3. Внутренние и внешние команды. Структура команд

Некоторые команды распознаются и выполняются непосредственно самим командным интерпретатором - такие команды называются внутренними (например, COPY или DIR). Другие команды ОС представляют собой отдельные программы, расположенные по умолчанию в том же каталоге, что и Cmd.exe, которые Windows загружает и выполняет аналогично другим программам. Такие команды называются внешними (например, MORE или XCOPY).

Рассмотрим структуру самой командной строки и принцип работы с ней. Для того, чтобы выполнить команду, после приглашения командной строки (например, C:\>) следует ввести имя этой команды (регистр не важен), ее параметры и ключи (если они необходимы) и нажать клавишу . Например:

C:\>COPY C:\myfile.txt A:\ /V

Имя команды здесь - COPY, параметры - C:\myfile.txt и A:\, а ключом является /V. Отметим, что в некоторых командах ключи могут начинаться не с символа /, а с символа – (минус), например, -V.

Многие команды Windows имеют большое количество дополнительных параметров и ключей, запомнить которые зачастую бывает трудно. Большинство команд снабжено встроенной справкой, в которой кратко описываются назначение и синтаксис данной команды. Получить доступ к такой справке можно путем ввода команды с ключом /?. Например, если выполнить команду ATTRIB /?, то в окне MS-DOS мы увидим следующий текст:

Отображение и изменение атрибутов файлов.

ATTRIB [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[диск:][путь]имя_файла]

Установка атрибута.

Снятие атрибута.

R Атрибут "Только чтение".

A Атрибут "Архивный".

S Атрибут "Системный".

H Атрибут "Скрытый".

/S Обработка файлов во всех вложенных папках указанного пути.

Для некоторых команд текст встроенной справки может быть довольно большим и не умещаться на одном экране. В этом случае помощь можно выводить последовательно по одному экрану с помощью команды MORE и символа конвейеризации |, например:

В этом случае после заполнения очередного экрана вывод помощи будет прерываться до нажатия любой клавиши. Кроме того, используя символы перенаправления вывода > и >>, можно текст, выводимый на экран, направить в текстовый файл для дальнейшего просмотра. Например, для вывода текста справки к команде XCOPY в текстовый файл xcopy.txt, используется следующая команда:

XCOPY /? > XCOPY.TXT

Замечание . Вместо имени файла можно указывать обозначения устройств компьютера. В Windows поддерживаются следующие имена устройств : PRN (принтер), CON (терминал: при вводе это клавиатура, при выводе - монитор), NUL (пустое устройство, все операции ввода/вывода для него игнорируются).



Рекомендуем почитать

Наверх