...
...

NT club. Часть 11. Консоль

NT club. Часть 11. Консоль

— Уэф, ты когда-нибудь видел, чтобы такой маленький пацак был таким меркантильным кю?
(с) "Кин-Дза-Дза!"

А что это такое?
В очередной раз приветствую читателей КГ в целом и NT club'а в частности. Сегодня речь пойдет о консоли, а если точнее, о командном интерпретаторе (командной строке), так как под словами "консоль" (console) и "оболочка" (shell) понимают программу-посредника между пользователем и ОС. Термин же "командный интерпретатор" подчеркивает режим, в котором происходит взаимодействие оператора с машиной — командный текстовый. Это один из старейших способов общения с ЭВМ. Практически все ОС, даже самые современные, содержат в своем составе программу, позволяющую управлять системой с помощью текстовых команд, набранных с клавиатуры. Это не архаика, как можно подумать сразу: наличие графического объектно-ориентированного интерфейса не может сделать консоль (здесь и далее я понимаю под термином "консоль" командный интерпретатор) ненужной или бесполезной. Многие вещи реализуемы быстрее с помощью консоли. Конечно, всегда можно найти или написать программу, позволяющую обеспечить нужную функциональность, но стоит ли так делать, если в самой ОС есть все необходимое? Одно из правил грамотного администратора гласит: используй стандартные средства. Или хотя бы умей ими пользоваться. Значит, будем изучать, что же полезного может нам предложить командный режим работы с компьютером.

Приступим-с!
Любой пользователь, имевший дело с ОС класса DOS (Disk Operating System — Дисковая Операционная Система), прекрасно знает, что такое текстовый режим и командная строка. Возможно, он также знает, что стандартный command. com можно заменить чем-нибудь другим, например, bash'ем (привет UNIX'оидам!), правда, с некоторыми ограничениями: DOS, в отличие от разных UNIX'ов, не является многозадачной ОС, к тому же, работает в реальном режиме процессора, а не защищенном. Делается это элементарной командой shell=[[диск:] путь] имя_файла [параметры] в файле config.sys. В NT же изначально используется графический режим, а текстовый мы можем увидеть только в начале загрузки системы, при крахе (BSOD) и включив полноэкранный режим в каком-либо консольном приложении с помощью комбинации ALT+Enter (DOS или Win32, неважно). Однако графический режим работы видеоадаптера (звучит, конечно, глупо, однако надо понимать, что видеокарта и соответственно дисплей может работать как в текстовом, так и в графическом режимах, хотя в обоих случаях в монитор будет поступать аналоговый видеосигнал) предполагает только способ отображения информации. Общаться с системой (не с программой!) мы по-прежнему можем с помощью оболочки, которую сами выбираем. Это может быть графический объектный explorer.exe, а может — текстовый интерпретатор cmd.exe или что-нибудь еще (Диспетчер задач, например). В любом случае эти оболочки будут делиться на текстовые (командные) и графические (кнопочки жать:-)). Поясню, что это значит. Command.com — текстовый командный интерпретатор, Norton Comman-der уже им не является, хотя и предназначен для текстового режима — при работе с ним мы не вводим текстовые команды с клавиатуры (а те, что вводим, обрабатываются command.com'ом), а имеем дело с кнопками из псевдографики. Таким образом, режим работы дисплея и тип оболочки не имеют ничего общего. Подобьем наши размышления: дисплей может отображать информацию как в текстовом режиме, так и в графическом, независимо от этого мы можем давать команды системе с помощью командного интерпретатора (в широком смысле этого слова) либо набирая с клавиатуры последовательность символов, составляющих команду, либо нажимая с помощью мыши или клавиатуры на те или иные графические объекты (кнопки, пусть и из псевдографики). Надеюсь, читатель разобрался во всей это мути, так как дальше мы наконец-то начнем разговор о нашем текстовом командном интерпретаторе, которым является...

cmd.exe
Да, именно это и есть стандартная консоль (помните наше соглашение?) для NT. Запустить ее можно, нажав Win+R и набрав cmd. Есть и command.com, но он предназначен для совместимости с приложениями DOS и работает через NTVDM. Консоль можно поставить в качестве оболочки вместо Проводника (explorer'а), что и делает система в режиме загрузки "Безопасный режим с поддержкой командной строки" (оболочку можно заменить, указав в boot.ini ключ /SAFEBOOT ALTERNATESHELL= <имя_файла> или изменив соответствующее значение в реестре). Первое, что я рекомендую сделать, это изучить справку по командной строке, поставляемую с системой. В Центре поддержки XP можно получить не только сведения по настройке консоли, но и информацию по имеющимся командам (а их там о-го-го) и программам (DOS'овским в том числе). Свои настройки командный процессор хранит в реестре, они индивидуальны для каждого пользователя, и основная их часть находится по адресу: HKCU\Console и HKCU\Software\Microsoft\Com-mand Processor. Здесь следует сделать небольшое отступление. Все, что мы вводим с клавиатуры в консоль, является командой, однако есть внутренние команды, которые встроены в сам интерпретатор, а есть внешние консольные программы, вызываемые интерпретатором по нашей просьбе. Именно поэтому, неправильно введя команду, мы получим сообщение """ не является внутренней или внешней командой, исполняемой программой или пакетным файлом". Консоль просто не знает такой команды или не нашла исполняемого файла (.com, .exe, .bat, .cmd) с таким именем. Заметьте: к исполняемым файлам относятся также пакетные файлы (.bat, .cmd), содержащие набор команд, которые выполнятся консолью при их запуске. Получить справку по часто используемым командам можно, набрав в консоли help. Для любой (ну, почти любой — зависит от разработчика) команды также есть ключ /?, который выводит помощь по команде и ее параметрам. Пользуйтесь этим! И еще. Если в имени файла есть некоторые спецсимволы, вроде пробела, то имя нужно заключать в двойные кавычки.

Конвейер и другие
Радость изучения команд я оставляю читателям. Мы же сейчас рассмотрим некоторые концептуальные вещи. Итак, по порядку.
• Перенаправление ввода-вывода. По умолчанию входная информация берется из буфера клавиатуры, а результат выводится на экран. Однако это можно изменить — достаточно поставить символы < или > и имя устройства (con, prn, lpt и т.д. — все как в DOS'е) или имя файла. Допустим, нам надо сохранить результат команды dir в файл 1.txt. Мы наберем dir> 1.txt. А команда type 1.txt> prn распечатает этот файл. Некоторые стандартные устройства: con — консоль, клавиатура + монитор; prn — принтер; nul — пустое устройство, "черная дыра"; lpt — устройство на параллельном порту; com1 — устройство на первом последовательном порту, как правило, модем.
• Конвейер. Иногда требуется, чтобы результат одной команды был входной информацией другой. В таких случаях используется технология конвейера (pipe — труба). Ее особенность в том, что в цепочки можно выстраивать несколько программ, причем в многозадачной ОС они (программы) могут выполняться одновременно. Классический пример использования этой технологии — программа more, позволяющая выводить на экран информацию порциями. Например, dir | more.
• Переменные. Многие данные удобно задавать с помощью переменных — системных, пользовательских и программных (их можно посмотреть командой set). Например, путь к папке temp задается переменными temp и tmp. Теперь этот путь можно использовать, написав %tmp% — система автоматически подставит нужное значение. Кстати, переменная path задает папки, в которых ищется исполняемый файл, если его имя было задано без указания пути.
• Программирование. Да! В консоли можно программировать, правда, довольно ограниченно (до уровня UNIX'овых консолей cmd не дотягивает, но, учитывая наличие WSH (Windows Script Host), не очень-то и хотелось:-)). Например, есть операторы условия, цикла и др. Таким образом, можно сохранять в пакетных файлах небольшие, но полезные программки.

Занавес
Это далеко не все, что я хотел вам рассказать о консоли. В будущем я вернусь к этой теме и разберу ее подробнее, ну, а мы пока переходим к следующей теме — о ней вы прочитаете в очередной статье.
Приятного времяпрепровождения! (Во загнул:-))

Creator, creator_vom@tut.by


© Компьютерная газета

полезные ссылки
Корпусные камеры видеонаблюдения
IP камеры видеонаблюдения