Назад...   К оглавлению раздела   Далее...

 

C. Работа в командной строке операционной системы

Содержание

Введение.

C.2. Работа в командной строке операционной системы. Командные оболочки.

C.3. Редактирование командной строки.

C.4. Шаблоны в файлах.

C.5. Перенаправление ввода/вывода.

C.6. Опции программных файлов в командной строке.

Введение

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

В командной строке:

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

В данной главе рассматриваются основные понятия технологии командной строки: командный процессор, переменные окружения, режима, приглашение командной строки, шаблоны файлов, опции команд.

C.2. Работа в командной строке операционной системы

Содержание

C.2.1. Введение

C.2.2. Shell и переменные окружения

C.2.2.1. Переменные окружения Command.com

C.2.2.1.1. Задание переменных окружения. Команда SET

C.2.2.1.2. Переменная PATH

C.2.2.1.3. Другие переменные окружения Command.com

Резюме.

Содержание раздела "Переменные окружения NDOS".

C.2.2.2. Переменные окружения NDOS.com

C.2.2.2.1. Задание переменных окружения.

C.2.2.2.2. Переменная PATH

C.2.2.2.3. Другие переменные окружения NDOS.com

C.2.3. Переменные BASH

C.2.3.1. Определение переменной

C.2.3.2. Переназначение переменной и отмена его значения. Вывод текущих значений переменных.

C.2.3.3. Экспорт переменных

C.2.3.4. Системные переменные BASH

C.2.3.5. Переопределяемые переменные

C.2.3.6. Переменные режима

C.2.3.7. Пользовательские переменные.

Резюме.

C.2.4. Переменные TCSH

C.2.5. Приглашение операционной системы.

C.2.1. Введение

После загрузки операционная система готова к работе. Под ее управлением можно запускать различные программы системного и прикладного назначения. Большинство пользователей работают с операционной системой не напрямую, а с помощью файловых (типа Norton Commander, Volcov Commander, Far, Dos Navigator и т.п.) или операционных оболочек (типа Windows 3.11, Dos Shell и других.) Но, во-первых, некоторые программы по разным причинам не выполняются при загруженных оболочках. Во-вторых, вследствие большого количества операционных оболочек трудно ориентироваться в них. В-третьих не всегда оболочку можно запустить (например, при временном выходе в операционную систему из выполняемой ей-же программы.) При временном выходе в DOS поверх программы загружается файл Command.com, и оперативной памяти становится недостаточно для работы операционной оболочки. В=четвертых, при сбоях в операционной системе Microsoft Windows95/98 иногда доступна загрузка только в командной строке.

Указанное выше позволяет сделать вывод о необходимости умения пользоваться командной строкой операционной системы. В этой части дается как бы "мультилингва" - описания служебных программ для работы с файлами в операционных системах Microsoft (MS-DOS, MS Windows 95/98/NT), в операционной системе IBM OS/2 и LINUX.

Для более подробной информации смотри документацию к операционным системам.

C.2.2. Shell и переменные окружения

После загрузки ядра операционной системы (для DOS это файлы Io.sys и MSDOS.sys) загружается так называемая программная оболочка, (или командный файл Command.com для систем MSDOS). В этой программной оболочке (или Shell) находятся интерпретаторы команд операционной системы и переменные окружения. Эти переменные окружения определяют приглашение операционной системы, пути, по котором ищутся вспомогательные файлы и программы, настройки аппаратных средств и опции вывода оглавления каталога.

Для операционной системы MS-DOS существует две оболочки. Первая, выбираемая по умолчанию и входящая в состав дистрибутива этой системы является программа Command.com. Другой оболочкой является входящий в состав Norton Utilites for DOS v. 6.0 - 8.0 оболочка NDOS.com.

Для UNIX - подобных операционных систем используется несколько различных оболочек. В частности, для LINUX наиболее часто используемые оболочки - это Bourne Again Shell (BASH) и TCSH - shell.

Все эти оболочки имеют разные переменные окружения. Описанием этих переменных автор и начнет свой рассказ о командной строке операционных систем.

Также следует отметить, что в [Р. Петерсен. LINUX: руководство по операционной системе //Изд. группа BHV, Киев, 1997. - 688 с.] на странице 446 дается следующая классификация переменных окружения, которой автор и будет придерживаться.

  1. Системные переменные - специальные переменные, которые нельзя переопределять.
  2. Переопределяемые переменные - специальные переменные, которые можно переопределять.
  3. Пользовательские переменные - переменные, присутствие которых в окружении не обязательно.

C.2.2.1. Переменные окружения Command.com

Итак, перечислим основные переменные окружения MS-DOS:

  1. Переменная местонахождения командного процессора COMSPEC.
  2. Переменная приглашения командной строки PROMPT.
  3. Переменная приглашения командной строки Windows 3.1x (только в MS-DOS v. 6.0 - 6.22) WINPMT.
  4. Переменная опций вывода оглавления каталога, действующих по-умолчанию DIRCMD.
  5. Переменная путей текущей конфигурации DOS (только для MS-DOS v. 6.0 и старше) CONFIG.
  6. Переменная путей для поиска исполняемых файлов PATH.
  7. Переменные для каталогов со временными файлами TEMP и TMP.
  8. Специальные переменные окружения, требуемые прикладными пакетами.

Примечание: системные переменные графической оболочки Windows здесь не рассматриваются.

Рассмотрим эти переменные по-подробнее:

Системные переменные DOS.

1. Переменная CONFIG определяет, какая из указанных в файлах Config.sys и Autoexec.bat конфигураций в настройке операционной системы активна. Эта опция не несет особого смысла и используется в файле Autoexec.bat в строке goto %config%. В этой строке определяется переход к той или иной последовательности загрузки резидентных программ для заданной конфигурации файла Config.sys. Для пользователя же эта переменная носит чисто информационный характер.

2. Переменная COMSPEC. Указывает путь местонахождения командного файла (или оболочки DOS). Этот путь соответствует пути для командного файла, указанного директивой SHELL в файле Config.sys. Автор считает, что существует только одна причина явно менять эту переменную - в случае перемещения командного файла.

Пример; с дискеты загружается операционная система фирмы Microsoft. С целью обеспечения правильной работы системы при смене дискеты в памяти компьютера создается виртуальный диск размером 2 Мбайта следующей командой файла Config.sys:

DEVICE=RAMDRIVE,SYS 2048 512 128 /E

В файл же Auoexec.bat вставляются следующие строчки:

copy a:\command.com D:\

set comspec=D:\command.com

После этого обращение к командному файлу всегда будет происходить на виртуальный диск D. В дисковод можно вставлять любые дискеты - система на "зависнет".

3. Переменная TZ - устанавливает часовой пояс для рабочей станции, работающей в глобальной сети. Ее синтаксис:

set TZ=zzzhhdst , где

zzz - зона местного времени, hh - отставание от Гринвича, dst - зона "летнего" времени. Так, для Москвы:

SET TZ=EST3EDT

Вообще EST определяет отставание от Гринвича (восточная долгота), PST - опережение Гринвича (западная долгота), а EDT/PDT - учет перехода на летнее время.

Остальные переменные рассматриваются в соответствующих разделах, посвященных различным аспектам работы командной оболочки DOS.

C.2.2.1.1. Задание переменных окружения. Команда SET.

В основном все переменные окружения оболочки MS-DOS определяются с помощью команды SET в файле Autoexec.bat. Исключением являются следующие переменные:

Команда SET без параметров выдает текущее состояние переменных окружения.

Команда

SET <имя>=<значение>

присваивает переменной с идентификатором <имя> строку <значение>. В строке <значение> делается различие между прописными и строчными буквами, а в имени переменной такого различия нет.

Команда

SET <имя>=

отменяет все значения переменной с идентификатором <имя> и удаляет ее из системного окружения.

Пример:

SET TMP=C:\TMP

присваивает значение переменной TMP, которые старые прикладные программы фирмы Microsoft использовали для определения каталога со временными файлами.

set tmp=C:\TMP

та же команда, набранная строчными буквами.

SET FILE=scandisk.log

переменной FILE присваивается имя файла scandisk.log. Теперь эту переменную можно использовать вместо имени этого файла, например:

type %FILE% | more - выдает поэкранную распечатку файла scandisk.log

Замечание 1. Автор не советует использовать в команде set никаких лишних пробелов, Так, из за указания пробелов перед и после знака "=" в операционной системе MS-DOS v. 6.0 в команде set TMP = C:\TMP переменная TMP у автора не добавилась в окружение DOS. Указание же пробелов после знака "=" при определении переменной PATH в любой операционной системе всегда приводит к очистке этой переменной.

Замечание 2. Задание и сброс переменных окружения возможно только в файле Autoexec.bat и в "чистой" командной строке MS-DOS. Задание же переменных окружения в файловых оболочках не приведет к изменению значений переменных окружения. В операционных же оболочках (и в графических оболочках MS WINDOWS 95/98/NT) изменение переменных окружения произойдет только на текущий сеанс эмуляции MS-DOS).

C.2.2.1.2. Переменная PATH.

Переменная PATH определяет пути, по которым будет производится поиск исполняемых файлов, набранных в командной строке или запускаемой из графической оболочки. Это бывает необходимо в следующих случаях:

  1. Необходим запуск программы не из ее "родного" каталога, а из каталога, содержащего файлы пользователя, обрабатываемые этой программой. Это наиболее часто используемый случай.
  2. Программа использует при своей работе другие программы, расположенные не в ее "родном" каталоге. Эта ситуация часто происходит при работе программ Windows.

Для удобства работы переменная PATH записывается без префикса SET. Ее синтаксис:

PATH=<путь>[{;<путь>}]

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

Задание PATH или PATH= без путей очищает переменную PATH. Задание же

PATH=<новый_список_путей> приводит к замене существующего значения переменной новым значением, а не добавление нового значения к списку имеющихся.

Добавление новых значений путей к файлам в переменную PATH происходит с помощью команды SET с указанием путей в верхнем регистре. Пример:

SET PATH=%PATH%;C:\TMP

добавляет новый путь в переменную PATH в ее конец.

SET PATH=C:\TMP;%PATH%

добавляет новый путь в переменную PATH в ее начало.

Неправильное использование переменной PATH:

SET PATH=%path%;c:\tmp

SET PATH=c:\tmp;%PATH%

Замечание 1. При запуски файла на исполнение сначала проверяется наличие файла с этим именем в рабочем каталоге, а уже потом - в путях переменной PATH.

Замечание 2. Порядок поиска файла по путям переменной PATH происходит слева направо, в порядке их записи. Поэтому, если существуют несколько исполняемых файлов с одинаковыми именами, но расположенных в разных каталогах, и эти каталоги прописаны в переменной PATH, то при вызове программы на исполнение из произвольного "неродного" каталога запустится программа из каталога, расположенного первым в переменной PATH.

Замечание 3. Переменная PATH задает пути поиска только исполняемых файлов. Для задания пути поиска неисполняемых файлов (например, файлов данных) используется команда Append.

C.2.2.1.3. Другие переменные окружения Command.com

Наиболее часто используются следующие переменные окружения DOS:

TEXT - определяет каталог со служебными файлами Лексикона. Если она не указана, используется каталог с программой lexicon.

CHIFILES - определяет каталог со служебными файлами ChiWriter. Если она не указана, используется каталог с программой cw.

87 - указывает программам, написанных на TurboC и Turbo Pascal, использовать (set 87=Y) или не использовать (set 87=N) команды сопроцессоров i80x87. Если переменная не используется, то инструкции используются только при наличии в системе сопроцессора.

PKTMP - указывает имя каталога, в котором архиватор PKZIP создает свои временные файлы.

INCLUDE - указывает имена каталогов (разделенных ";"), в которых происходит поиск файлов заголовка компилятором Microsoft.

LIB - указывает имена каталогов (разделенных ";"), в которых происходит поиск библиотек и объектных файлов при их сборке в исполняемый файл командой link ("редактор связей").

NC - указывает имена каталогов со служебными файлами Norton Commander. По-умолчанию - каталог с файлом nc,com (nc.exe в более поздних версий).

VC - указывает имена каталогов со служебными файлами Volkov Commander. По умолчанию - каталог с файлом vc.com.

NU - указывает имена каталогов со служебными файлами Norton Utilites. По умолчанию - каталог с файлом norton.exe.

LEX - используется программой для проверки орфографии Micro Spell. Она должна быть обязательно установлена при пользовании этой программой. В противном случае программа выдает ошибку.

ME_PATH - переменная используется для указания каталога с файлами редактора MultiEdit. Ее использование не обязательно - система сама правильно распознает местонахождение этих файлов.

BLASTER - указывает параметры звуковой платы. Пример:

set BLASTER=a330 i9 d1 t2

базовый порт ввода/вывода - 330, ей присвоено аппаратное прерывание IRQ9, она использует канал DMA - 1, тип карты - 2 (совместимая с Sound Blaster Pro). Обычно эта переменная устанавливается в файл Autoexec.bat командой инсталляции драйверов звуковой платы.

TEMP и TMP - переменные, определяющие каталог, в котором программы фирмы Microsoft создают свои временные файлы. Переменная TMP используется старыми приложениями, TEMP - новыми.

Резюме.

В этом разделе Вы познакомились с командной строкой операционной системы MS-DOS, и ее важной частью -- переменными окружения. Вы теперь знаете основные переменные окружения MS-DOS и коммандного процессора Command.com. Теперь пора познакомиться с альтернативным коммандным процессором MS-DOS: NDOS.COM и его переменными окружения.

Содержание

C.2.2.2. Переменные окружения NDOS.com

C.2.2.2.1. Задание переменных окружения.

C.2.2.2.2. Переменная PATH

C.2.2.2.3. Другие переменные окружения NDOS.com

C.2.2.2. Переменные окружения NDOS.com

О программе NDOS.

DOS, дисковая операционная система, состоит из нескольких программных файлов, составляющих ее ядро. Для MS-DOS это IO.SYS, MSDOS.SYS, и COMMAND.COM (в PC-DOS они называются IBMBIO.COM, IBMDOS.COM, COMMAND.COM). Первые две программы управляют работой компьютера, а третья, COMMAND.COM, формирует приглашение пользователя, команды прерывания, загружает на выполнение программы, и интерпретирует пакетные файлы. COMMAND.COM является командным процессором по-умолчанию при загрузке компьютера. NDOS заменяет COMMMAND.COM.

Вы найдете в NDOS поддержку большого множества возможностей, включая усовершенствованную команду DIR, любую команду можно выбрать и активизировать, изменив ее вид. При этом NDOS полностью совместима с COMMAND.COM.

NDOS является оболочкой DOS (т.е. программой, которая выдает доступ к DOS функций и команд.)

Переменные среды.

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

Переменные среды могут содержать любой алфавитно-цифровой знак, плюс знак подчеркивания (_) и знак доллара ($). Кроме того, можно включать любую последовательность символов в имя переменной, если заключить ее имя в квадратные скобки. Например %[AB##1] ссылается на переменную с именем AB##1.

Некоторые имена переменных имеют специальное значение в NDOS. Только CMDLINE, DIRCMD, PATH и TEMP действительно сохраняются в системном окружении; они являются внутренними и не могут быть просмотрены и модифицированы командами SET.

C.2.2.2.1. Задание переменных окружения.

Команда SET

Синтаксис:

SET [/P][/R <Путь>] [<Переменная>[=][<Значение>]]

Назначение:

Показывает, создает, модифицирует или удаляет переменную окружения.

Комментарии.

Если набрать SET без параметров, выводится список всех переменных

Набор SET <переменная>=<значение> назначает новое значение переменной.

Набор SET <переменная>= переменная окружения

аннулируется и удаляется из окружения.

NDOS ограничивает имя переменной 80 символами и значение -- 255 символов. Имена переменной приводятся к верхнему регистру, а значение переменной сохраняет свой регистр.

Опции программы SET:

/P -- Пауза; выводит переменные по мере заполнения экрана с паузой после его заполнения.

/R -- загружает переменные окружения из файла.

Пример просмотра и перезагрузки переменных режима:

set > varlist

set /r varlist

По-умолчанию размер системного окружения оболочки NDOS -- 512 байт. Его можно изменить с помощью опции /E командной строки. Минимальный размер окружения -- 256 символов. максимальный -- 32000 символов.

Команда UNSET

Удаляет переменные из системного окружения. Синтаксис:

UNSET <имя_переменной> [<имя переменной>...]

UNSET *

Последняя команда удаляет все переменные.

Команда ESET.

Данная команда служит для редактирования системных переменных и/или псевдонимов (aliases).

Синтаксис:

ESET <имя переменной или псевдонима>

C.2.2.2.2. Переменная PATH

Переменная PATH (внутренняя).

Эта переменная почти аналогична переменной PATH в оболочке COMMAND.COM, но имеется некоторые отличия, о которых будет сказано ниже.

Синтаксис:

PATH [[<Диск>:]<Путь_1>][;[[<Диск>:]<Путь_2>]...]

- для определения переменной PATH;

PATH ;

- для аннулирования переменной PATH;

PATH

- для просмотра списка путей.

Как и в оболочке COMMAND.COM, директории разделяются точкой с запятой, а пути преобразуются к верхнему регистру.

В отличие от оболочки COMMAND.COM, набранное в командной строке имя переменной выдает список путей, а не аннулирует переменную. Для аннулирования переменной необходимо после имени переменной указывать точку с запятой.

Текущий путь можно редактировать программой ESET.

C.2.2.2.3. Другие переменные окружения NDOS.com

# -- возвращает число аргументов в командной строке пакетного файла. Она может быть использована только в командном файле.

? -- возвращает код завершения последней внешней команды.

CMDLINE -- командная строка, расширенная до 255 символов. Она может дать доступ к внешней программы при поиске в системном окружении.

DIRCMD -- обозначает стандартный формат команды DIR. Она содержит в себе допустимую комбинацию ключей этой программы.

PATH -- указывает NDOS, в каких директориях необходимо искать выполняемые файлы операционной системы (.COM, .EXE, .BTM и .BAT), не находящихся в текущей директории. Некоторые приложения (например, Лексикон для ДОС) используют эту переменную для поиска своих файлов.

TEMP -- указывает NDOS, куда он должен записывать временные файлы.

_BG -- выдает фоновый цвет экрана на текущей позиции курсора (возвращает трехсимвольную строку).

_COLUMNS -- означает текущее число столбцов экрана. _CPU

-- означает тип центрального процессора, выдавая следующие величины:

86 8086 или 8088

186 80186 или 80188

200 NEC V20 или V30

286 80286

386 80386 или 80486

_CWD -- текущая директория в формате <Диск>:\<Путь>\

_CWDS -- текущая директория в формате <Диск>:\<Путь> (без обратной косой черты в конце).

_CWP -- текущая директория в формате \<Путь>\

_CWPS -- текущая директория в формате \<Путь> (без обратной косой черты в конце).

_DATE -- содержит текущую системную дату в формате, определяемой в директиве COUNTRY в файле CONFIG.SYS.

_DISK -- текущий диск (например, С).

_DOSVER -- текущая версия DOS.

_DOW -- текущий день недели (Mon, Tue, Wed, Thu, Fri, Sat, Sun).

_FG -- основной цвет экрана на текущей позиции курсора (возвращают трехсимвольную строку).

_MONITOR -- возвращает тип монитора: монохромный MONO или цветной COLOR.

_NDP -- указывает тип сопроцессора, возвращая строку:

000 нет инсталлированного сопроцессора.

087 8087

287 80287

387 80387 или 80486

_ROWS -- возвращает текущее число строк на экране.

_SHELL -- номер уровня текущей оболочки в стеке. Начальная оболочка имеет номер 0. Если нет стека оболочек, переменная выдает значение 99.

_TIME -- содержит текущее системное время в формате, установленном директивой COUNTRY в файле CONFIG.SYS.

_VIDEO -- возвращает MONO, CGA, EGA, VGA для типа видеокарты.

Резюме.

В этом подразделе Вы познакомились с переменным командного процессора NDOS. Теперь вперед, к освоению командной строки UNIX! Первая остановка -- переменные командной оболочки BASH.

C.2.3. Переменные BASH

В отличие от DOS и его оболочек количество переменных окружения в LINUX значительно больше. Это объясняется тем, что UNIX - подобные системы были специально разработаны для работы со строкой приглашения операционной системы. С помощью этого приглашения и встроенных в UNIX стандартных команд в ней можно писать настоящие программы, содержащими даже условные выражения и циклы!

Различные разработчики UNIX - подобных операционных систем создали не только разные ядра и прикладные программы для этих операционных систем, но и разные оболочки. LINUX впитала лучшее из этих разработок, и в настоящее время поддерживает следующие оболочки: Bourne Again Shell (BASH), Public Domain Korn Shell (PDKSH) и TC - Shell (TCSH). Они в свою очередь являются потомками Korn - Shell и C = Shell. Не смотря на различия в реализации этих командных оболочек в UNIX - подобных операционных системах, в LINUX между ними больше сходства, чем различий. Это понятно - они реализованы в рамках одной операционной системы для Intel - совместимых компьютеров. К рассмотрению переменных в этих оболочках мы и приступим.

По умолчанию в LINUX применяется BASH. Но по желанию пользователь может загрузить другую оболочку. Все они вызываются "одна поверх другой", расходуя память компьютера. В отличие от Command.com и NDOS.com, каждая новая оболочка загружается с параметрами по-умолчанию, а текущие установки сбрасываются. Так же, как и в DOS, при возврате в предыдущую оболочку все переопределенные переменные очищаются. Для "наследования" переменных (то есть сохранения настроек части переменных предыдущих оболочек в последующих) в LINUX используются команды export в BASH и setenv в TCSH, о которых будет сказано ниже.

C.2.3.1. Определение переменной

Синтаксис определения переменной в BASH следующий:

<имя_переменной>=<константа>

В качестве константы используется так называемая символьная константа - набор ASCII - символов, заключенных в двойные кавычки (как в языке Си, на котором написана данная операционная система). Регистр букв, набранных как в имени переменной, так и в константе, существен. Так, в отличие от DOS, переменные me, ME и Me различны! Пример определения переменной:

>myfile="List"

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

ls > $myfile

echo "Printing $myfile..."

lpr $myfile

В этом примере вначале создается оглавление каталога (команда ls, см. ???), которое перенаправляется в файл List. После этого на экран выводится сообщение:

Printing List...

и на принтер выдается содержание файла List (т.е оглавления текущего каталога, см. первую команду). Заметим, что перед использованием переменной перед ней ставится знак доллара, указывающий, что вместо символов (в данном случае myfile) используется строковая переменная.

C.2.3.2. Переназначение переменной и отмена его значения.

Вывод текущих значений переменных.

Для назначения переменной нового значения используется та же конструкция:

<имя_переменной>=<новое_значение>

где новое значение - константа.

Для отмены назначения переменной и удаления этой переменной из окружения используется команда unset. Например,

unset myfile

удаляет из окружения переменную myfile.

Вывод текущих значений переменных выдается с помощью команды set, а только специальных переменных окружения - командой env.

C.2.3.3. Экспорт переменных

Экспорт переменной в другую оболочку осуществляется в BASH с помощью команды export. Ее синтаксис:

export <имя_переменной>[{ <имя_переменной>}]

т.е. представляет из себя команду и список экспортируемых переменных, разделенную пробелами. Переменные перед этим должны быть определены.

C.2.3.4. Системные переменные BASH.

Переменная HOME.

Переменная HOME определяет путевое имя Вашего начального каталога. Этот каталог автоматически создается при создании администратором Ваших учетных данных, а этой переменной назначается правильное значение этого каталога. Эта переменная используется в том случае, когда нужно задать путевое имя начального каталога. Например, пусть переменной HOME присвоено значение /home/yuri. Тогда следующая команда:

cd $HOME/letters

приведет к переходу в каталог /homr/yuri/letters.

Переменная LOGNAME.

Данная переменная содержит Ваше регистрационное имя. Так, для пользователя yuri значение этой переменной будет yuri. Ее следует использовать в тех случаях, когда надо указать регистрационное имя.

Переменная TZ

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

Для Москвы:

TZ=EST3EDT

Значение по-умолчанию -

TZ=PST8PDT

Задание зоны аналогично для переменной TZ в DOS.

C.2.3.5. Переопределяемые переменные.

Переменная SHELL

В операционной системе LINUX при регистрации можно использовать три оболочки (см. введение к разделу "Переменные BASH". Переменная SHELL определяет оболочку, загружаемую по умолчанию. В качестве строки передается каталог с файлами оболочки. Пример:

SHELL=/bin/bash

задает в качестве оболочки, загружаемой по-умолчанию, BASH.

SHELL=/bin/pdksh

задает в качестве оболочки, загружаемой по-умолчанию, PDKSH-shell.

SHELL=/bin/tcsh

задает в качестве оболочки, загружаемой по-умолчанию, TCSH.

Заметим, что смена оболочки произойдет не сразу, а только после перезагрузки системы.

Переменная PATH

Данная переменная содержит имена каталогов, в котором содержатся выполняемые программы. При записи программы на исполнение в каталогах, заданных этой переменной, ищутся файлы с данным именем, а после нахождения этого имени оно "достраивается" до полного имени и только после этого запускается на выполнение. В отличие от DOS, если текущий каталог не указан в переменной PATH, из него также нельзя запускать файлы.

В переменной PATH все каталоги записываются без пробелов, а разделяются знаком ":" (двоеточие). Знак двоеточие в конце означает текущий каталог. В переменную PATH обязательно необходимо включать имена каталогов /usr/bin и /usr/sbin. По-умолчанию переменная PATH выглядит так:

PATH=/usr/bin:/usr/sbin:

то есть в ней указаны вышеперечисленные каталоги и рабочий каталог.

Добавление в переменную PATH новых каталогов происходит, как показано в следующем примере:

PATH=$PATH:$HOME:

В данном примере в конец списка каталогов PATH добавляется домашний каталог.

Переменные PS1 и PS2

Данные переменные определяют вид приглашения операционной системы: основной и дополнительный.

Переменные MAIL и MAILCHECK

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

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

Переменная MAILCHECK задает промежуток времени, по истечении которого система будет предупреждать Вас о получении почты. По-умолчанию этот промежуток устанавливается в 600 секунд (10 минут). Время указывается в секундах.

Пример использования переменных для управления электронной почтой:

MAIL=/var/mail/yuri

>MAILCHECK=1200

В данном примере основной почтовый ящик переназначается в каталог /var/mail/yuri, уведомление о поступившей почте будет посылаться каждые 1200 секунд (20 минут).

C.2.3.6. Переменные режима

В BASH существуют так называемые дополнительные режимы работы оболочки. Это внутренние переменные, значения которых можно устанавливать или сбрасывать. Включение режима осуществляется командой

set -o <режим>

а выключение - командой

set +o <режим>

Перечислим основные режимы BASH:

Режим ignoreeof

Этот режим блокирования возможности выхода из оболочки с помощью комбинации клавиш Ctrl+d. Выход из оболочки с установленной опцией возможен только по команде exit. Этот режим используется для перестраховки при использовании комбинации клавиш Ctrl+d, которая часто используется и в других программах.

Режим noclobber

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

ls > myfile

ls -l > myfile

ls -l >> myfile

О переадресации ввода и вывода смотри C.3.3.

Режим noglob

Режим используется для блокирования специальных символов регулярных выражений, используемых в шаблонах: *, ?, ~, [, ]. В данном режиме эти символы можно использовать в именах файлов. Например, допустимым будет имя файла Why? . Однако использование регулярных выражений будет запрещено!

C.2.3.7. Пользовательские переменные.

Переменная MAILPATH

Эта переменная используется для указания путей для поиска дополнительных почтовых ящиков. Как уже указывалось в разделе C.2.3.5., в системе для каждого пользователя должен быть создан хотя бы один почтовый ящик. Однако не возбраняется каждому пользователю иметь несколько дополнительных почтовых ящиков, местонахождение которых и определяется этой переменной. Однако данная переменная не создается автоматически при создании учетных данных пользователя, и должна определяться отдельно.

В приведенном ниже примере задается путь для дополнительного почтового ящика, находящегося в директории /home/mail/yuri, если значение переменной LOGNAME равно yuri:

MAILPATH=/home/mail/$LOGNAME

Переменная CDPATH

Аналога этой переменной нет в не UNIX-подобных операционных системах. С помощью этой переменной определяются каталоги, в которых команда cd ищет подкаталоги. Пусть, например, фрагмент дерева каталогов в LINUX системе такой:

Дерево каталогов (пример)

задана переменная CDPATH:

CDPATH=/home/yuri/mail

и текущим является каталог /home/yuri/letters/old. Тогда следующая команда:

cd myletters

вызовет не ошибку, как при отсутствии переменной CDPATH, а вызовет переход в каталог /home/yuri/mail/myletters. Команда же

cd old

вызовет ошибку, так как путь к директории /home/yuri/letters не прописан в пути CDPATH.

Пользоваться этой переменной следует с осторожностью! Дело в том, что если указать в переменной CDPATH каталоги, имеющие подкаталоги с одинаковыми именами, то действие команды cd не предсказуемо!

Переменная TERM

Переменная определяет тип подключенного терминала. Эта информация нужна таким программам, как стандартные редакторы для определения режима ввода/вывода. Дело в том, что на разных терминалах (или консоли, как этот термин расшифровывается в MS-DOS) существуют различные раскладки клавиатуры, различные кодировки и виды символов. Как правило, если Вы регистрируетесь в системе с терминала, она сама правильно определяет его тип. Однако если Вам надо явно указать его вид, необходимо явно указать его значение. Аналогом этой переменной в DOS могут служить команды mode, chcp, keyb, программы - русификаторы экрана и клавиатуры и другие программы, управляющие переназначением клавиш и управляющие выводом символов на экран.

Переменная EXINIT

Данная переменная содержит команды, позволяющие конфигурировать редакторы Ex и Vi. Когда Вы вызываете эти редакторы, команды, указанные в переменной EXINIT, выполняются. Команды пишутся в одну строку, в кавычках. Опции с одинаковым префиксом записываются подряд.

Резюме.

В данном разделе Вы познакомлись с основными переменными BASH: основными и переопределяемыми, из задание, отмену, переопределение. Однако BASH не является оболочкой по умолчанию даже в Linux. В мире *nix наибольшее распространение получила другая оболочка -- TCSH, о которой будет рассказано в следующем разделе.

Содержание

C.2.4. Переменные TCSH

C.2.4.1. Определение переменной

C.2.4.2. Переназначение переменной и отмена его значения. Вывод текущих значений переменных.

C.2.4.3. Экспорт переменных

C.2.4.4. Системные переменные TCSH

C.2.4.5. Переопределяемые переменные

C.2.4.6. Переменные режима

C.2.4.7. Пользовательские переменные.

C.2.4.8. Управление событиями.

C.2.4.9. Файлы инициализации TCSH-shell.

Резюме

C.2.4. Переменные TCSH

Между переменными таких разновидностей shell, как TCSH и BASH, существуют лишь незначительное различие. В TCSH значение переменной присваивается с помощью команды set и оператора присваивания. Также в TCSH используются как строковые, так и целые переменные.

C.2.4.1. Определение переменной

Синтаксис определения строковой переменной в TCSH следующий:

set <имя_переменной>=<константа>

В качестве константы используется так называемая символьная константа - набор ASCII - символов, заключенных в двойные кавычки (как в языке Си, на котором написана данная операционная система). Регистр букв, набранных как в имени переменной, так и в константе, существен. Так, в отличие от DOS, переменные me, ME и Me различны! Пример определения переменной:

set myfile="List"

Оператор присваивания должен быть либо отделен пробелами со всех сторон, либо вообще не отделен пробелами. Наличие пробела только с одной стороны не допускается. Так, следующие определения переменной правильные:

set myfile="List"

set myfile = "List"

а следующие два -- неправильные:

set myfile= "List"

set myfile ="List"

Как в BASH, в TCSH для вычисления переменной служит знак доллара. При вычислении определяется значение переменной. В следующем примере вычисляется переменная myfile, и ее содержимое (List) используется как аргумент команды echo:

set myfile="List"

echo $myfile

List.

Как и в BASH, двойные кавычки, одинарные кавычки и обратная косая черта подавляют вычисление специальных символов. Кроме того, для присваивания результатов команд переменным используются обратные кавычки.

В TCSH-shell допускается объявлять числовые переменные, пользуясь вместо команды set командой @. Это делает похожей TCSH-shell на языки программирования (в частности, на C).

C.2.4.2. Переназначение переменной и отмена его значения. Вывод текущих значений переменных.

Для назначения переменной нового значения используется та же конструкция:

<имя_переменной>=<новое_значение>

где новое значение - константа.

Для отмены назначения переменной и удаления этой переменной из окружения используется команда unset. Например,

unset myfile

удаляет из окружения переменную myfile.

Вывод текущих значений переменных выдается с помощью команды set, а только специальных переменных окружения - командой setenv.

C.2.4.3. Экспорт переменных

В TCSH-shell нет возможности экспорта переменных из других оболочек.

C.2.4.4. Системные переменные TCSH

Переменная HOME.

Переменная HOME определяет путевое имя Вашего начального каталога. Этот каталог автоматически создается при создании администратором Ваших учетных данных, а этой переменной назначается правильное значение этого каталога. Эта переменная используется в том случае, когда нужно задать путевое имя начального каталога. Например, пусть переменной HOME присвоено значение /home/yuri. Тогда следующая команда:

cd $HOME/letters

приведет к переходу в каталог /home/yuri/letters.

Переменная LOGNAME.

Данная переменная содержит Ваше регистрационное имя. Так, для пользователя yuri значение этой переменной будет yuri. Ее следует использовать в тех случаях, когда надо указать регистрационное имя.

Переменная cwd

Эта переменная определяет путевое имя текущего рабочего каталога.

C.2.4.5. Переопределяемые переменные

Переменная SHELL

В операционной системе LINUX при регистрации можно использовать три оболочки (см. введение к разделу "Переменные TCSH". Переменная SHELL определяет оболочку, загружаемую по умолчанию. В качестве строки передается каталог с файлами оболочки. Пример:

SHELL=/bin/bach

задает в качестве оболочки, загружаемой по-умолчанию, BASH.

SHELL=/bin/pdksh

задает в качестве оболочки, загружаемой по-умолчанию, PDKSH-shell.

SHELL=/bin/tcsh

задает в качестве оболочки, загружаемой по-умолчанию, TCSH.

Заметим, что смена оболочки произойдет не сразу, а только после перезагрузки системы.

Переменная PATH

Данная переменная содержит имена каталогов, в котором содержатся выполняемые программы. При записи программы на исполнение в каталогах, заданных этой переменной, ищутся файлы с данным именем, а после нахождения этого имени оно "достраивается" до полного имени и только после этого запускается на выполнение.

В переменной PATH все каталоги заключаются в скобки и записываются без пробелов, а разделяются знаком " " (пробел). В переменную PATH обязательно необходимо включать имена каталогов /usr/bin и /usr/sbin. По-умолчанию переменная PATH выглядит так:

PATH=(/usr/bin /usr/sbin)

то есть в ней указаны вышеперечисленные каталоги и рабочий каталог.

Добавление в переменную PATH новых каталогов происходит, как показано в следующем примере:

PATH=$PATH:$HOME:

В данном примере в конец списка каталогов PATH добавляется домашний каталог.

Переменная prompt

Данная переменная определяет вид основного приглашения операционной системы.

Чтобы облегчить определение формы приглашений, можно воспользоваться заранее определенными наборами кодов. Коды приведены здесь:

Код

Функция

%/

Текущий рабочий каталог.

%h, %!, !

Текущий номер в перечне.

%t

Время суток.

%n

Имя пользователя.

%d

День недели.

%w

Текущий месяц.

%y

Текущий год.

Например, ниже приведено новое приглашение, в которое вставляется время и номер события в соответствии с перечнем:

>set prompt = "%t %! $"

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

Переменная mail

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

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

Эта же переменная в TCSH-shell служит для задания интервала проверки наличия почты (как переменная MAILCHECK в BASH-shell).

Пример использования переменных для управления электронной почтой:

>set mail (1200 /var/mail/yuri )

В данном примере основной почтовый ящик переназначается в каталог /var/mail/yuri, а система проверяет наличие почты каждые 20 минут (1200 секунд.)

В системе можно указать более одного ящика, например:

>set mail (1200 /var/mail/yuri /usr/mail/yuri /home/mail/yuri)

C.2.4.6. Переменные режима

В TCSH существуют так называемые дополнительные режимы работы оболочки. Это внутренние переменные, значения которых можно устанавливать или сбрасывать. Включение режима осуществляется командой

set <режим>

а выключение - командой

unset <режим>

Перечислим основные режимы TCSH:

Режим ignoreof

Этот режим блокирования возможности выхода из оболочки с помощью комбинации клавиш Ctrl+d. Выход из оболочки с установленной опцией возможен только по команде exit. Этот режим используется для перестраховки при использовании комбинации клавиш Ctrl+d, которая часто используется и в других программах.

Режим noclobber

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

ls > myfile

ls -l > myfile

ls -l >> myfile

О переадресации ввода и вывода смотри C.3.3.

Режим noglob

Режим используется для блокирования специальных символов регулярных выражений, используемых в шаблонах: *, ?, ~, [, ]. В данном режиме эти символы можно использовать в именах файлов. Например, допустимым будет имя файла Why? . Однако использование регулярных выражений будет запрещено!

Режим notify

Этот режим немедленно уведомляет пользователя о завершении выполнения фонового задания.

Режим verbose

Выводит на экран команду после подстановки события из перечня.

Режим echo

Отображает на экране каждую команду перед ее выполнением.

C.2.4.7. Пользовательские переменные.

Переменная cdpath

Аналога этой переменной нет в не UNIX-подобных операционных системах. С помощью этой переменной определяются каталоги, в которых команда cd ищет подкаталоги. Пусть, например, фрагмент дерева каталогов в LINUX системе такой:

задана переменная cdpath:

set cdpath=/home/yuri/mail

и текущим является каталог /home/yuri/letters/old. Тогда следующая команда:

cd myletters

вызовет не ошибку, как при отсутствии переменной CDPATH, а вызовет переход в каталог /home/yuri/mail/myletters. Команда же

cd old

вызовет ошибку, так как путь к директории /home/yuri/letters не прописан в пути CDPATH.

Пользоваться этой переменной следует с осторожностью! Дело в том, что если указать в переменной CDPATH каталоги, имеющие подкаталоги с одинаковыми именами, то действие команды cd не предсказуемо!

Переменная TERM

Переменная определяет тип подключенного терминала. Эта информация нужна таким программам, как стандартные редакторы для определения режима ввода/вывода. Дело в том, что на разных терминалах (или консоли, как этот термин расшифровывается в MS-DOS) существуют различные раскладки клавиатуры, различные кодировки и виды символов. Как правило, если Вы регистрируетесь в системе с терминала, она сама правильно определяет его тип. Однако если Вам надо явно указать его вид, необходимо явно указать его значение. Аналогом этой переменной в DOS могут служить команды mode, chcp, keyb, программы - русификаторы экрана и клавиатуры и другие программы, управляющие переназначением клавиш и управляющие выводом символов на экран.

Переменная EXINIT

Данная переменная содержит команды, позволяющие конфигурировать редакторы Ex и Vi. Когда Вы вызываете эти редакторы, команды, указанные в переменной EXINIT, выполняются. Команды пишутся в одну строку, в кавычках. Опции с одинаковым префиксом записываются подряд.

Переменная history

Эта переменная определяет количество команд в перечне, запоминаемых при их вводе с консоли. Например:

set history=5

означает, что будет запоминаться перечень из пяти последних введенных с консоли команд.

Переменная savehist

Данная переменная определяет количество команд в перечне, которые сохраняются для следующего сеанса. Команды записываются в файл .history.

C.2.4.8. Управление событиями.

В TCSH-shell имеется утилита history, которая регистрирует последние из выполненных команд. Если утилита history не активирована автоматически, ее надо сначала активировать посредством команды set. В следующем примере утилита ведения перечня активируется и получает указание запоминать последние пять команд.

set history=5

Каждая из внесенных в перечень команд TCSH-shell называется событием. Чтобы увидеть на экране, какие события произошли в системе, введите команду history и нажмите клавишу Enter. Система выдаст перечень последних событий с номерами.

>history

1 ls

2 vi mydata

3 mv mydata reports

4 cd reports

5 ls -F>

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

>!2

vi mydata

>!vi

vi mydata

>!?myd?

vi mydata

Обозначать команду из перечня можно и по-другому, указав ее смещение относительно конца списка. Например:

>!-4

vi mydata

Восклицательный знак также используется для обозначения последней из введенных команд. Он эквивалентен смещению -1. Например:

>!!

ls –F mydata reports/

>!-1

ls –F mydata reports/

События в перечне можно обозначать специальными символами которые можно использовать вместо повторения данной команды. Пусть событие, обозначенное как !1, представляет команду ls. Тогда вызов этого события подменяет вызов команды ls. Например:

>!1 > myfile

ls > myfile

В этом случае !1 трансформировалось в ls. Можно обозначать и отдельные слова события. Обозначение события, после которого стоит двоеточие и число, относится к соответствующему слову события. Например, !3:2 обозначают второе слово третьего события, а именно слово reports. Используя диапазон номеров, можно указать несколько слов. Так, !3:0-1 выбирают нулевое (команду) и первое слово третьего события, т.е. mv mydata. Специальные символы ^ и $ указывают на второе и последнее слово события и используется для обозначения его аргументов. Первый аргумент обозначается как ^, а последний -- $. Диапазон ^-$ обозначает все аргументы. Примеры:

>!2:0 preface

vi preface

>!3:0-1 oldletters

mv mydata oldletters

>lpr !2:^

lpr mydata

>ls !3:$

ls reports

>cp !3:^-$

cp mydata reports

>cp !3*

cp mydata reports

Звездочка -- это специальный символ, который обозначает все аргументы в ранее выполненной команде. Это обозначение интерпретируется как ^-$.

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

>cat my\!data

C.2.4.9. Файлы инициализации TCSH-shell.

В TCSH-shell имеются три файла инициализации: .login, .logout, .tcshrc. Файл .login -- это регистрационный файл инициализации, который выполняется при входе пользователя в систему. Файл .logout выполняется при выходе из системы. .tcshrc -- это файл инициализации shell, который выполняется во время каждого входа в TCSH, будь то регистрация в системе или вход по команде tcsh.

Файл .login

Это специальный файл инициализации для определения специальных переменных для инициализации shell. Этот файл соответствует файлу .profiles в BASH-shell и PDKSH-shell.

Файл .login можно редактировать с помощью любого текстового редактора, но нужно соблюдать осторожность -- невнимательность может привести к неправильной работе переменной или вообще к ее пропуску. Рекомендуется при редактировании сохранить резервную копию.

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

Примечание: предыдущие абзацы относятся также к файлам .logout и .tcshrc.

В файле .login должны обязательно содержаться переменная term, определяющая тип терминала, и желательно -- переменные EXINIT и ENV, определяющие параметры редактора Vi и имя новой shell соответственно. Пример файла .login:

setenv term vt100
setenv EXINIT 'set nu ai'
setenv ENV $HOME/.bashrc

Файл .tcshrc

Файл .tcshrc содержит также определения псевдонимов и всех переменных, используемых для включения специальных средств shell. По этой причине в файле .tcshrc обычно находятся псевдонимы. определенные, например, для команд rm, cp и mv. В следующем примере приведен файл .tcshrc со многими стандартными определениями.

set shell=/usr/bin/tcsh
set  path=$PATH(/bin  /usr/bin)
set  cdpath=(/home/$LOGIN/reports  /home/$LOGIN/letters)
set  prompt  =  "$cwd>"
set history=20
set ignoreof
set noclobber
alias rm 'rm -i'
alias mv 'mv -i'
alias cp 'cp -i'

Локальные переменные, в отличие от переменных среды. определяются с помощью команды set. Эта команда должна использоваться для всех переменных, определяемых в файле .tcshrc.

При редактировании переменных path и cdpath следует учитывать, что эти путевые имена содержатся в массиве. Элементы этого массива отделяются друг от друга пробелами, о чем не следует забывать при вводе нового имени.

Файл .logout

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

clear
echo "Good-bye for now,"$LOGIN

 

Резюме

В данном разделе рассматривались основные переменные и конфигурационные файлы TCSH. Кроме этого, рассматривались переменные режима, работа с командной строкой в этой оболоче. Однако, рассказ о работе в командных оболочках в технологии коммандной строки будет неполным без описания приглашения и вида командной строки в MS-DOS. Это будет описано в следующем разделе выпуска.

 

Содержание

C.2.5. Приглашение операционной системы.

C.2.5.1. Приглашение операционной системы MS-DOS

C.2.5. Приглашение операционной системы.

В случае, когда операционная система готова к диалогу с пользователем, она выдает на экран приглашение. Основные приглашения имеют вид:

Таблица C.II. Приглашения операционной системы.

DOS

LINUX

<диск>:\<путь>

$

<диск>

>

Например;

1. A:\>

C:\WINDOWS\>

2. C>

Внешний вид приглашения можно изменить.

Для MS-DOS в качестве элемента приглашения могут быть:

Знак "=". Знак "|". Знак "$". Знак ">". Знак "<". Текущее время. Текущая дата. Текущий диск и каталог. Текущий диск. Версия MS-DOS. Переход на следующую строку.

Также в системное приглашение MS-DOS можно вставлять другие ASCII - последовательности. В случае установки драйвера ANSI.SYS в файле Config.sys в приглашении также можно использовать и Esc - последовательности.

В системе LINUX есть основное и дополнительное приглашение. Дополнительное приглашение появляется при записи длинной команды, не помещающейся в командной строке. Каждая новая строка начинается с нового дополнительного приглашения.

В приглашении LINUX могут быть любые символы и следующие последовательности:

Текущая дата. Действующая оболочка и ее версия. Время суток. Имя пользователя. Текущий (рабочий) каталог.

Для установки желаемого приглашения необходимо поменять некоторые переменные окружения. Как это сделать - смотри ниже.

C.2.5.1. Приглашение операционной системы MS-DOS

По-умолчанию системное приглашение операционной системы MS-DOS выглядит как

A>

где A - номер текущего диска. Его можно сменить с помощью команды PROMPT . Эта команда является внутренней, то есть встроенной в командный процессор Command.com. Формат команды:

prompt текст

Таблица возможных параметров в тексте команды prompt, а также Esc - последовательности, которые можно указать в этой команде, приведены в таблице 2.2.

Таблица C.III. Специальные символы команды Prompt

Символ Команда в системном окружении
   
$Q Вывод символа "="
$$ Вывод символа "$"
$T Вывод текущего времени.
$D Вывод текущей даты
$P Вывод буквы текущего диска и имени текущего каталога
$V Вывод текущей версии MS-DOS
$N Вывод буквы текущего диска
$G Вывод символа ">"
$L Вывод символа "<"
$B Вывод символа "|"
$_ Переход в начало следующей строки
$E Вывод символа Esc (ASCII 27)
$H Стирание предыдущего символа.

Esc-последовательности

Последовательность Описание
Esc[2J Очистка экрана и перевод курсора в левый верхний угол экрана
Esc[K Очистка строки от курсора и до конца строеи
Esc[row,colH Перемещение курсору в указанную строку (параметр row меняется в пределах от 1 до 25 для режима 80x25) и в указанный столбец (col меняется от 1 до 80 для режима 80x25).
Esc[row,colf Синоним Esc[row,colH
Esc[numA Перемещение курсора на num строк вверх
Esc[numB Перемещение курсора на num строк вниз
Esc[numC Перемещение курсора на num позиций вправо
Esc[numD Перемещение курсора на num позиций влево
Esc[s Сохранение текущих координат курсора в специальном буфере
Esc[u Восстановление координат курсора, сохраненных в специальном буфере
Esc[6n Вывод текущих координат курсора в спецмальном формате Esc[row,colR
Esc[=7n Включение автоматического перевода курсора на следующую строку (автоматическое добавления символа EOL в конец строки ввода)
Esc[=7l Включение автоматического перевода курсора на следующую строку
Esc[=numh Выбор режима работы дисплея
  Параметр num может принимать значения:
  0 - 40x25 монохромный текст
  1 - 40x25 цветной текстовый режим
  2 - 80x25 монохромный текст
  3 - 80x25 цветной текст
  4 - 320x200 4-х цветный графический режим
  5 - 320x200 монохромная графика
  6 - 640x200 монохромная графика
  7 - разрешение "заворачивания" изображения
  13- 320x200 цветной графический режим
  14- 640x200 16-ти цветный графический режим
  15- 640x350 монохромный графический режим
  16- 640x350 16-ти цветный графический режим
  17- 640x480 монохромный графический режим
  18- 640x480 16-ти цветный графический режим
  19- 320x200 256-ти цветный графический режим
Esc[numm Параметры
  0 - нормальное изображение (белые символы на черном фоне)
  1 - выделение яркостью
  4 - выделение подчеркиванием (только на монохромных мониторах)
  5 - выделение мерцанием символов
  7 - инверсное изображение
  8 - скрытый текст (только на монохромных дисплеях)
  Для установки цвета и фона необходимо использовать:
  30- черные символы
  31- красные символы
  32- зеленые символы
  33- желтые символы
  34- синие симврлы
  35- фиолетовые символы
  36 - бирюзовые символы
  37- белые символы
  40- черный фон
  41- красный фон
  42- зеленый фон
  43- желтый фон
  44- синий фон
  45- фиолетовый фон
  46- бирюзовый фон
  47- белый фон

Для сброса всех установок команды prompt необходимо в командной строке набрать команду prompt без параметров .

Если на компьютере вместе с операционной системой MS-DOS установлена операционная оболочка Microsoft Windows 3.1x, то в сеансе MS-DOS в оконном режиме будет отображаться приглашение по-умолчанию. Для его смены необходимо установить переменную WINPMT . Формат этой команды:

SET WINPMT=текст

где текстом выступает последовательность параметров приглашения. Они будут теми же, что и в команде MS-DOS.

Также необходимо отметить, что текст приглашения prompt и WINPMT записывается в системное окружение компьютера. Поэтому, если Вы использовали слишком длинное приглашение, то Вы можете быстро исчерпать область памяти для системного окружения длиной 512 байт. Чтобы этого не произошло, увеличьте область системного окружения командой SHELL в файле Conaig.sys. Рекомендуемый автором размер системного окружения - 1024 байта .

Приглашение командной строки MS-DOS будет отображаться только в ее "чистой" командной строке. При загрузке операционной оболочки типа Norton Commander, Volkov Commander и DOS Navigator системное приглашение всегда будет иметь вид:

<диск>:\<путь>>,

например:

C:\NC>

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

1. Стандартное приглашение MS-DOS:

prompt $n$g

2. Стандартное приглашение файловой оболочки:

prompt $p$g

3. В верхнем правом углу будет постоянно светиться строка с текущим днем недели, датой и временем:

prompt $e[s$e[1;33;44m$e[1;53H$d$e[1;69H$t$e[0m$h$h$h$h$h$h $e[25;1H$e[1:31;40m$e[u$p$e[0;32;40m$g

C.3. Редактирование командной строки

Содержание

C.3.1. Запуск из командной строки.

С.3.2. Особенности запуска из командной строки сервера Novell NetWare.

C.3.3. Редактирование командной строки в различных операционных системах. Драйвер командной строки DOS - программа doskey.

C.3.4. Назначение клавиш редактирования командной строки.

C.3.5. Особенности командной строки в UNIX.

C.3.6. Определение псевдонимов.

C.3.7. Резюме

C.3.1. Запуск из командной строки.

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

С.3.2. Особенности запуска из командной строки сервера Novell NetWare.

Обычно команда запуска выполняемых модулей в программе Novell NetWare Server выглядит следующим образом:

load <имя модуля> <параметры>

Таким образом запускаются программы Novell NetWare (с расширением *.NLM) и ее драйверы (с расширениями *.DSK и *.LAN). Перед определением переменных окружения Novell NetWare, а также настройки ее параметров и для запуска утилит Ncopy и Ndir идентификатор Load указывать НЕ НУЖНО.

C.3.3. Редактирование командной строки в различных операционных системах. Драйвер командной строки DOS - программа doskey.

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

Действия

DOS

UNIX

Стирание предыдущего символа

Backspase

Backspase, Del,Ctrl + n

Удаление текущего символа (на который указывает курсор)

Del

Ctrl + d

Вызов в командную строку предыдущей команды

F3 <стрелка вверх> (Doskey) <стрелка вверх> Ctrl + E (Norton Commander)

! <стрелка вверх>

Включение\выключение режима вставки символов

Ins (Doskey)

 

Очистка всей командной строки

Esc

Cntrl + u

Это были все команды редактирования, доступные MS-DOS для командной строки, без загрузки редактора командной строки и операционных оболочек. Если нужно работать более интенсивно с командной строкой, необходимо запустить этот редактор или оболочку. В DOS для редактирования командной строки используется программа DOSKEY . Для UNIX такие средства не нужны, операционная система поддерживает редактирование командной строки самостоятельно.

Вызов команды DOSKEY.COM происходит следующим способом:

doskey (опции)

Наиболее часто используемые опции:

/INSERT - запуск в режим вставки. При вводе нового текста в командной строке старый текст будет раздвигаться. Выход\вход в этот режим осуществляется клавишей Ins.

/OVERSTRIKE (по умолчанию) - новый текст записывается поверх старого. Вход\выход из этого режима - клавиша Ins.

C.3.4. Назначение клавиш редактирования командной строки.

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

Назначение клавиш операциям в командной строке

Действие DOS Doskey NP *) NE **) DosShell Windows 95 NetWare OS/2 UNIX
                   
Ввод текущей строки Enter Enter Enter Enter Enter Enter Enter Enter Enter
Ввод символа "конец файла" Ctrl+Z. F6 Ctrl+Z. F6 - ***) - - - - - -
Очистка всей командной строки и переход к следующей (новой) строке. Esc - - - - - Esc - -
Очистка всей командной строки - Esc Esc Esc Esc Esc - Esc Ctrl+U
Включение/выключение режима вставки символов - Ins Ins Ins          
                   
Движение курсора в командной строке:                  
на символ влево - "стрелка влево" Ctrl+S "стрелка влево", Ctrl+S "стрелка влево" "стрелка влево" "стрелка влево" "стрелка влево" "стрелка влево", Ctrl+B
на символ вправо - "стрелка вправо" Ctrl+D "стрелка вправо", Ctrl+D "стрелка вправо" "стрелка вправо" "стрелка вправо" "стрелка вправо" "стрелка вправо", Ctrl+F
на слово назад - Ctrl + "стрелка влево" Ctrl + "стрелка влево" Ctrl + "стрелка влево" - Ctrl + "стрелка влево" ? ? -
на слово вперед - Ctrl + "стрелка вправо" Ctrl + "стрелка вправо" Ctrl + "стрелка вправо" - Ctrl + "стрелка вправо" ? ? -
в начало строки - Home Ctrl+Home Home Home Home Home Home -
в конец строки - End Ctrl+End End End End End End -
                   
Удаление:                  
Стирание предыдущего символа Backspace Backspace Backspace Backspace Backspace Backspace Backspace Backspace Backspace, Del, Ctrl+D
Удаление текущего символа (на который указывает курсор) Del Del Del Del Del Del Del Del Ctrl+D
Удаление предыдущего слова - ? Ctrl + Backspace Ctrl + Backspace - Ctrl + Backspace - ? -
Удаление команды до конца, начиная с позиции курсора - Ctrl+End     - - - ? -
Удаление символов, начиная с символа, указанным текущим положением курсора, по символ, указанный Вами F4 F4 - - - - - ? -
                   
Работа с буфером                  
Копирование одного символа командной строки в буфер F1 F1 - - - - - ? -
Копирование из буфера всех символов, но не включая символа, введеного после этой клавиши F2 F2 - - - - - ? -
Копирование содержимого буфера в командную строку F3 F3, "стрелка вверх" Ctrl+E F3, "стрелка вверх", Ctrl+E - - "Стрелка вверх" "Стрелка вверх" !, "Стрелка вверх"
Копирование текущей команды в буфер и очистка командной строки, без выполнения команды F5 F5     - - - ? -
                   
Вывод списка команд, запомненных в буфере - doskey/H, F7 Alt+F8 Alt+F8 - F4 - ? history
Выбор предыдущей команды из списка - "стрелка вверх" Ctrl+E "стрелка вверх", Ctrl+E - "стрелка вниз" "Стрелка вверх" "Стрелка вверх" history + "Стрелка вверх", Ctrl+P
Переход к следующей команде из списка - "стрелка вниз" Ctrl+X "стрелка вниз", Ctrl+X - "стрелка вверх" "стрелка вниз" "стрелка вниз" history + "стрелка вниз", Ctrl+N
Переход к первой команде из списка - PgUp - - - - ? ? ! 1, Esc <
Переход к последней команде из списка - PgDn, F3 - - - - ? ? !, Esc >
Очистка буфера ранее введеных команд - Alt+F7 - - - -      
Поиск ранее запомненной команды - <первые символы и шаблоны> F8 - - - <первые символы и шаблоны> ? ? ! <первые символы или шаблоны>
Вывод команды с указанным номером - F9 + <номер> - - - - ? ? ! + <номер>
                   
Прочие сочетания                  
Печать на принтере содержимого экрана (однократное) PrtScr PrtScr PrtScr PrtScr PrtScr - - ? ?
Печать на принтере всех символов, набранных на клавиатуре и выводимых на экран Ctrl+PrtScr, Ctrl+P Ctrl+PrtScr, Ctrl+P Ctrl+PrtScr Ctrl+PrtScr Ctrl+PrtScr - - ? -
Приостанвка вывода текста на экран Pause, Ctrl+S Pause, Ctrl+S Pause, Ctrl+S Pause, Ctrl+S - Pause - ? ?
Прекращение выполнения программы Ctrl+Break, Ctrl+C Ctrl+Break, Ctrl+C Ctrl+Break, Ctrl+C Ctrl+Break, Ctrl+C - - - ? -
Перезагрузка компьютера Ctrl + Alt + Del Ctrl + Alt + Del Ctrl + Alt + Del Ctrl + Alt + Del Ctrl + Alt + Del Ctrl + Alt + Del - Ctrl + Alt + Del Ctrl + Alt + Del
Переключение на формат клавиатуры США Ctrl+Alt+F1 Ctrl+Alt+F1 Ctrl+Alt+F1 Ctrl+Alt+F1 Ctrl+Alt+F1 - - - -
Переключение на национальный формат клавиатуры Ctrl+Alt+F2 Ctrl+Alt+F2 Ctrl+Alt+F2 Ctrl+Alt+F2 Ctrl+Alt+F2 - - - -

*) Файловая оболочка (типа Norton Commander) с включенными панелями.

**) Файловая оболочка с выключеными панелями.

***) Прочерк означает отсутствие реализации этого действия. Знак вопроса - автору ничего не известно о реализации этой функции и назначение клавиш.

Условные обозначения: DOS - чистый MS-DOS, без загруженных драйверов командной строки. Doskey - MS-DOS с загруженным драйвером doskey, NP - файловые оболочки Norton Commander, Volkov Commander и др. с включенными панелями, NE - те же оболочки с выключенными панелями. DosShell - пункт Run (Выполнить) оболочек DosShell и Microsoft Windows 3.xx. Windows 95 - пункт Run (Выполнить) операционных систем Microsoft Windows 95/98/2000/NT4. Novell - операционные системы Novell NetWare версий 3.1x и 4.xx. OS/2 - командная строка операционной системы IBM OS/2 Warp. UNIX - различные клоны UNIX (IRIX, SCO UNIX, HP-UX, Linux).

C.3.5. Особенности командной строки в UNIX.

В системе UNIX одновременно на выполнение можно послать несколько программ. Для этого их надо перечислить (вместе с опциями и параметрами) в командной строке, отделяя одну от другой точкой с запятой ";". В DOS это можно сделать только при создании псевдонима, о котором речь пойдет ниже.

C.3.6. Определение псевдонимов.

Для облегчения работы с командной строкой (например, чтобы все время не набирать команду со множеством опций) бывает проще создать новую команду, представляющую собой комбинацию из уже имеющихся. Эти новые комбинации называются псевдонимами в UNIX и макросами в MS-DOS. Для их создания используют конструкции:

в DOS - doskey <имя новой команды>=<макрокоманда>,

где <макрокоманда> - последовательность программ с опциями, параметрами и специальными символами (смотри в документации по DOS описание программы doskey).

В UNIX - alias <имя новой команды>=<имя старой команды с опциями и параметрами>

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

В DOS в макросах можно использовать формальные параметры и другие возможности, ранее присутствовавшие только в командных файлах (с расширением .bat).

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

Для отмены псевдонима нужно набрать:

в DOS - doskey <имя макроса>=

в UNIX - unalias <имя псевдонима>.

C.3.7. Резюме

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

C.4. Шаблоны в файлах.

Содержание

С.4.1. Назначение шаблонов

С.4.2. Определение.

С.4.3. Пример шаблонов.

C.4.4. Резюме.

C.4.1. Назначение шаблонов

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

C.4.2. Определение.

Шаблоны представляют собой обычное имя файла (и его расширение) , в котором вместо некоторых букв появляются знаки ?, *, и (в UNIX) []. Знак вопроса указывает на то, что на его месте непременно должен стоять какой-либо допустимый символ имени файла (буква, цифра и т.д.) и причем только дин . Знак * указывает на то, что на его месте может стоять любое количество символов , допустимых в имени файла, а также вообще ничего не стоять . В квадратные скобки заключаются те знаки, один из которых обязательно должен присутствовать в имени файла на этом месте.

C.4.3. Пример шаблонов.

Шаблон

Соответствие

boo?.tmp

book.tmp, boot.tmp, boo1.tmp и др.

boo[tk].tmp

boot.tmp и book.tmp

b*t.t?p

boot.tep, bat.tmp, bt.tnp и др.

[a-c]3.bat

a3.bat, b3.bat и c3.bat

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

Пример:

*t.tmp

bt.tmp, boo.tmp

Это связано с недоработкой программного обеспечения.

Также в некоторых реализациях MS-DOS игнорируются все буквы и цифры после знака *. Учитывайте это при составлении шаблонов!

Шаблоны можно указывать и в имени, и в расширении. Он также может состоять из одних только специальных символов. Например:

*.* - шаблон для всех файлов с любым расширением.

???. - все файлы с именем из трех символов без расширения.

*.com - все файлы с расширением com.

*.? -- файлы с расширением из одной буквы.

name.* -- все файлы с именем name и любым расширением.

C.4.4. Резюме.

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

Симво-лы

Значение

?

На месте этого знака должен находится один и только один из допустимых символов имени/расширения файла.

*

На месте этого знака должны находится любое количество допустимых символов имени/расширения или не находится ни одного. В некоторых реализациях все следующие за этим знаком символы игнорируются при поиске.

[]

В скобках указывается символы, из которых один обязательно должен присутствовать в имени/расширении. В случае, если символы в скобках записаны через знак тире '-', то допускается присутствие также всех символов, расположенных между ними.

C.5. Перенаправление ввода/вывода.

Содержание

C.5.1. Назначение потоков.

C.5.2. Ограничение потоков.

C.5.3. Определение и классификация потоков.

C.5.4. Переназначение потоков.

C.5.5. Переназначение стандартного потока ошибок (в UNIX).

C.5.6. Перенаправление потока ввода.

C.5.7. Конвейерная обработка.

C. 5.8. Перенаправление вывода на принтер.

C.5.9. История возникновения потоков в MS-DOS.

C.5.10. Резюме.

C.5.1. Назначение потоков.

Ввод/вывод в операционных системах (как MS-DOS, так и UNIX) может быть организован двумя принципиально разными способами. Первый способ - это прямое программирование устройств ввода/вывода (дисковода, экрана, модема, клавиатуры). Он может быть организован на различных уровнях (непосредственное программирование устройств, использование сервисных средств операционной системы, смешанный подход и т.д.), но суть его при этом не меняется. Каждая программа, написанная с использованием этого способа, может работать только с этим устройством и ни с каким другим. В настоящее время используется именно этот способ. Именно с помощью этого подхода (точнее, путем "косвенного" программирования периферийных устройств через драйверы этих устройств) и реализован классический WIMP - интерфейс, о котором уже было много сказано в предыдущей главе. Он позволяет создавать красивые и довольно содержательные средства общения с пользователем (меню, окна и тому подобное), а современные технологии позволяют программе при установке автоматически настраиваться на установленное на компьютере оборудование. Но у этих систем есть недостаток: они не могут принять данные с устройств и передать данные устройствам, для работы с которыми они не созданы. Например, нельзя данные вводить с модема, если программа работает только с клавиатурой. Чтобы осуществить это, используют другой способ: ввод/вывод с использованием потоков. В этом случае каждое устройство рассматривается операционной системой как файл, куда можно поместить и откуда можно взять информацию. Так же, как информация, записанная в файл, рассматривается операционной системой как единое целое, не зависимо от способа записи его на диске, так и физическая реализация процесса ввода/вывода информации устройством никак не отражается на работе пользователя.

C.5.2. Ограничение потоков.

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

C.5.3. Определение и классификация потоков.

Поток , скажем так, представляет собой некоторый буфер в памяти, куда поступает или откуда выбирается информация. Существуют следующие стандартные потоки:

1. Стандартный поток ввода - это обычно клавиатура.

2. Стандартный поток вывода - это обычно монитор.

3. Стандартный поток вывода ошибок и диагностических сообщений (стандартный поток ошибок) - это обычно дисплей (монитор).

C.5.4. Переназначение потоков.

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

>

- переназначает стандартный поток вывода другому устройству (или файлу). Если этот файл существует, он очищается, и на его место записывается новая информация. Используется в DOS и UNIX. В UNIX те же действия может осуществлять конструкция 1>.

>>

- То же самое, но если файл существует, то новая информация записывается в конец этого файла. Используется в DOS и UNIX. Для UNIX также можно использовать конструкцию 1>>.

C.5.5. Переназначение стандартного потока ошибок (в UNIX).

Обычными средствами DOS не может перенаправить стандартный поток ошибок. В UNIX для этого можно использовать команды 2> и 2>>, соответствующие вышеприведенным для стандартного потока вывода.

Для перенаправления в UNIX стандартного потока ошибок в стандартный поток вывода используется конструкция >$ (по умолчанию в UNIX стандартному потоку ввода присваивается номер 0, стандартному потоку вывода - 1, а стандартному потоку ошибок - 2. Конструкция в UNIX 0 >$ 2 переназначает стандартный поток ввода в стандартный поток ошибок, то есть все символы, введенные в этом сеансе с клавиатуры, тут же отображаются на экране, и их нельзя перенаправить в файл).

C.5.6. Перенаправление потока ввода.

Переадресация стандартного ввода осуществляется конструкцией < для DOS и UNIX и 0> только для UNIX.

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

program < indata.dat >> outdata.txt

В данном примере входные данные программы program читаются из файла indata.dat и записываются в файл outdata.txt.

В примере:

sort < mylist > prn

данные из файла mylist сортируются стандартной программой MS-DOS sort и результат выводится на принтер.

C .5.7. Конвейерная обработка.

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

sort < mylist | more.

В этом примере данные из файла mylist сортируются программой sort и постранично выводятся на экран программой more.

В UNIX тоже возможна переадресация потока с одновременным выводом данных на экран, и даже переадресация на два разных устройства. Для переадресации стандартного вывода в файл с одновременной выдачей информации на экран используется команда tee. Например, команда cat в UNIX позволяет просматривать файл. Следующая конструкция:

cat first | tee second

копирует файл first в файл second, одновременно показывая его на экране.

C.5.8. Перенаправление вывода на принтер.

Для вывода данных на принтер используются конструкции:

в DOS > prn в UNIX lpr

Еще один пример: команда

cat first | tee second | lpr

копирует файл first в файл second, одновременно распечатывая его на принтере.

Командой lpr можно также вывести несколько файлов на печать. Подробности смотри ниже.

C.5.9. История возникновения потоков в MS-DOS.

Исторически первая версия MS-DOS основывалась на многоплатформенной операционной системе для восьмиразрядных процессоров - CP/M. От нее она унаследовала и способ работы с файлами - через контрольные блоки файлов (File Control Block, FCB). Но уже во второй версии MS-DOS стала использоваться позаимствованная из операционной системы UNIX работа с файлами через дескрипторы файлов (File Handle). Одновременно с реализацией метода дескрипторов файла в MS-DOS из UNIX перешел поточный механизм организации файлов и возможность перенаправления потоков. с тех пор работа с файлами через FCB стала анахронизмом и поддерживается в операционных системах фирмы Microsoft (вплоть до Windows 98) лишь для совместимости со старыми версиями.

Следует также отметить, что термины "FCB", "дескрипторы файлов", "потоки" употребляются применительно к интерфейсу операций ввода/вывода операционных систем, а не для файловых систем как таковых. Так, использование для работы с файлами метода дескрипторов может происходить и в операционной системе MS-DOS с файловой системой FAT, и в Windows 2000 с NTFS, и в Novell NetWare с NWFS, и в Linux с NFS!

C.5.10. Резюме.

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

Напоследок приводим таблицы, в которой кратко приводятся данные, описанные в этом разделе.

Номер

Название потока в UNIX

Устройство

0

Стандартный поток ввода

консоль, клавиатура

1

Стандартный поток вывода

консоль, дисплей

2

Стандартный поток ошибок

дисплей

 

Устройство

Обозначение в DOS.

Консоль

CON

1-й параллельный порт

LPT1

2-й параллельный порт

LPT2

Принтер (синоним LPT1)

PRN

1-й последовательный порт

COM1

2-й последовательный порт

COM2

3-й последовательный порт

COM3

4-й последовательный порт

COM4

Модем (синоним COM1)

AUX

Пустое устройство

NUL

 

Символ

Смысл перенаправления

>

Перенаправляет стандартный вывод на другое устройство или в файл. Содержимое файла при этом теряется.

>>

Перенаправляет стандартный вывод в файл. Содержимое файла не теряется. Запись идет в режиме добавления.

<

Осуществляет (перенаправляет) стандартный ввод с другого устройства или из файла.

|

Символ конвейерной обработки. Выходные данные работы программы, расположенной слева, передаются на вход программы, расположенной справа от знака конвейера.

C.6. Опции программных файлов в командной строке.

Содержание

C.6.1. Назначение опций.

C.6.2. Общий вид опций

C.6.3. Определение параметра

C.6.4. Порядок следования опций.

C.6.5. Замечания об опциях.

C.6.6. Резюме.

C.6.1. Назначение опций.

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

C.6.2. Общий вид опций

Опции имеют вид: -<набор символов>

Для MS-DOS возможно также: /<набор символов>

Примечание: в некоторых командах MS-DOS допускается использовать для обозначения опций только слэш ('/').

Опции указывают, в каком режиме должна работать программа и как обрабатывать данные. Если не указать опции, то режим работы и обработка данных устанавливаются по умолчанию, то есть такими, какими их выбрал разработчик программы.

C.6.3. Определение параметра

Параметр - это некоторое слово, символ, имя или шаблон файла (или что-то другое), что будет обрабатываться данной программой. Очень часто требуется обязательное присутствие параметра при запуске программы на выполнение. В отличие от опций, параметрам не предшествует никакой символ. Пример команды с опциями и параметрами:

dir

/0:GEN -W

*.exe

 

(опции)

(параметр)

C.6.4. Порядок следования опций.

Как правило, порядок опций , в отличие от порядка появления параметров в командной строке, произволен . Некоторые опции и параметры не сочетаются друг с другом, то есть присутствие одних исключает присутствие других и тому подобное. Чтобы избежать неприятных сообщений об ошибках, нужно проверить по документальным программам совместимость опций и параметров.

Следует отметить, что для большинства разновидностей операционной системы UNIX допускается записывать опции слитно. Например, следующие записи эквивалентны:

ls -l -R

и

ls -lR

В MS-DOS такое объединение запрещено! При этом сообщение об ошибках выводится не всегда - просто вторая опция игнорируется. Так, правильно писать

pkzip -aex -r my.zip

Запись же

pkzip -aexr my.zip

будет эквивалентна

pkzip -aex my.zip

C.6.5. Замечания об опциях.

Использование большого числа опций - особенность интерфейса командной строки в операционной системе MS-DOS. В интерфейсе командной строки операционных систем UNIX широко применяется принцип умолчания. Использование этого принципа доведено "до логического конца", так что опции в командной строке UNIX практически не приходится набирать. Команда сама определяет, что и когда ей нужно делать в данное время и в данном месте. Однако вследствие этого эти операционные системы перегружены системными переменными и файлами конфигураций.

C.6.6. Резюме.

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

Необходимые параметры и опции программ, запускаемых в командной строке, можно найти в описании и инструкциях пользователя.

 

Назад...   К оглавлению раздела   Далее...