Похожие сайты…

 

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

Содержание

Введение

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

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

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

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

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

Содержание

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

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

Указанное выше утверждение позволяет сделать вывод о необходимости умения пользоваться командной строкой операционной системы. В этой части даётся как бы «мультилингва» — описания служебных программ для работы с файлами в операционных системах Microsoft (MS-DOS, MS Windows 98/XP/7), и в операционной системе Linux всех дистрибутивов.

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

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

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

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

Для операционных систем на основе Windows NT (Windows 2000 — Windows 8) существует только одна командная оболочка — файл cmd.exe. Правда, к этой оболочке можно добавлять функциональность путём установки в Windows NT новых пакетов (например, GnuWin32, CygWin и других). Базовая же оболочка (без дополнений) очень напоминает оболочку MS-DOS/MS Windows 95/98 Command.com.

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

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

Также следует отметить, что в [Р. Петерсен. 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 и командной оболочки cmd.exe рассматриваются в разделе C.2.2.3.

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

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

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

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 — зона «летнего» времени. Так, значение переменной для Москвы до 2010 года было:

SET TZ=EST3EDT ,

а текущее значение:

SET TZ=EST4 ,

Вообще 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. Задание же переменных окружения в файловых оболочках не приведёт к изменению значений переменных окружения. В операционных же оболочках (и в графических оболочках Microsoft Windows) изменение переменных окружения произойдёт только на текущий сеанс эмуляции MS-DOS.

Замечание 3. Описание способов задания и сброса переменных окружения в Microsoft Windows NT — 8 смотри в разделе C.2.2.3.

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 в MS-DOS. В Microsoft Windows XP — 8 для задания расширений файлов, которые ищутся операционной системой в каталогах из переменной PATH, используется переменная «PATHEXT». Её значение по-умолчанию:

SET PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

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

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

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

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

87 — указывает программам, написанных на Turbo C и 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 Utilities. По умолчанию — каталог с файлом 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

О программе 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 функций и команд). В командных оболочках Microsoft Windows NT — 8 используется совместимая с Command.com оболочка «cmd.exe», с возможностями выше, чем «command.com», но ниже, чем «NDOS.com». Кроме того, в Windows XP — 8 можно установить расширение UNIX для этой оболочки — GnuWin32.

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

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

Переменные среды могут содержать любой алфавитно-цифровой знак, плюс знак подчёркивания (_) и знак доллара ($). Кроме того, можно включать любую последовательность символов в имя переменной, если заключить её имя в квадратные скобки. Например %[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. Теперь нужно выяснить, как задаются и какие существуют переменные в операционных системах корпорации Microsoft, построенных на основе технологии Windows NT. Вперёд!

C.2.2.3. Переменные окружения Windows NT — Windows 7

В операционных системах на основе Microsoft Windows NT (Windows 2000/XP, Windows Vista/7/8) также существуют переменные окружения, которые используются не только в командных оболочках, но и в графических оболочках, для указания местоположения системных и пользовательских файлов и каталогов с ними. Как и в других оболочках, эти переменные можно разделить на системные, переопределяемые и пользовательские переменные.

Системные переменные Windows NT

К системным переменным Windows NT относят следующие переменные:

ALLUSERSPROFILE — каталог с общими для всех пользователей файлами настройки приложений. Его местоположение в Windows XP «C:\Documents and Settings\AllUsers», в Microsoft Windows Vista/7 — «C:\ProgramData»;

APPDATA — каталог с данными личных настроек приложений для текущего пользователя. Его местоположение в Windows XP «%USERPROFILE%\Application Data», а в Windows Vista/7 — «%USERPROFILE%\AppData\Roaming», где %USERPROFILE% — значение системной переменной (смотри ниже);

CommonProgramFiles — каталог с общесистемными драйверами и модулями, которые не копируются в папку %SystemRoot%. По-умолчанию его местоположение во всех операционных системах Windows — «C:\Program Files\Common Files»;

COMPUTERNAME — имя компьютера, данное ему при установке или переопределённое при подключении компьютера к локальной сети (в «рабочую группу» или «домен»). В каждой локальной сети имя компьютера должно быть уникальным. Эту переменную можно переназначить только способом, показанным на рисунке С.001:

a)

b)

Рис. C.001. Диалоговое окно смены имени компьютера в Windows 7

ComSpec — системная переменная, задающая имя командного процессора в Microsoft Windows NT (для работы в технологии командной строки). Его значение по-умолчанию для всех 32-х разрядных операционных систем на основе Windows NT — %SystemRoot%\system32\cmd.exe;

HOMEDRIVE — обозначение буквы системного раздела жёсткого диска, на который устанавливается операционная система Windows. Значение по-умолчанию — «C:»;

HOMEPATH — обозначение домашнего каталога пользователя, используемое вместо переменной %USERPROFILE%. Его значение по-умолчанию — «\Users\%USERNAME%» в Windows Vista/7 и «\Documents and Settings\%USERNAME%» в Windows XP;

LOCALAPPDATA — каталог с данными и программами текущего пользователя в операционной системе Windows. По-умолчанию его значение в Windows XP: «%USERPROFILE%\Local Settings\Application Data», и «%USERPROFILE%\AppData\Local» в Microsoft Windows Vista/7;

LOGONSERVER — имя компьютера, под котором оно фигурирует в локальной сети Microsoft Windows (протокол SMB). Это имя появляется в папке «Сетевое окружение» при разделении его ресурсов с другими компьютерами в сети. По-умолчанию значение этой переменной — «\\%COMPUTERNAME%»;

NUMBER_OF_PROCESSORS — указывает количество процессоров (или его ядер), установленных на компьютер;

OS — указывает тип операционной системы. Её значение безальтернативно — «Windows_NT»;

PROCESSOR_ARCHITECTURE — архитектура процессора. Может принимать значение «x86» для 32-х разрядных процессоров и «x64» для 64-х разрядных процессоров Intel и AMD;

PROCESSOR_IDENTIFIER, PROCESSOR_LEVEL, PROCESSOR_REVISION — переменные, специфичные для процессора;

ProgramData — переменная, содержащая путь к каталогу с данными и настройками программ, общих для всех пользователей компьютера. Её значение по-умолчанию в Windows XP — «c:\Documents and Settings\All Users\Application Data», а в Windows 7/8 — «C:\ProgramData»;

ProgramFiles — каталог с прикладными программами всех пользователей данного компьютера. По-умолчанию значение этой переменной для всех операционных систем Microsoft Windows — «C:\Program Files»;

PSModulePath — каталог с модулями к новому командному процессору для операционных систем Microsoft Windows, начиная с операционной системы Microsoft Windows XP SP2. Его значение по-умолчанию — «%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\»;

PUBLIC — переменная указывает на каталог с данными, общими для всех пользователей компьютера. Её значение по-умолчанию для Microsoft Windows XP — «C:\Documents and Settings\AllUsers», а для Windows Vista/7/8 — «C:\Users\Public»;

SystemRoot — переменная, указывающая, куда устанавливается операционная система и где содержатся общесистемные файлы. По-умолчанию её значение для операционных систем Microsoft Windows — «C:\Windows». Эту переменную нельзя переопределять!

USERDOMAIN — переменная, указывающая, к какому домену Windows NT подключён указанный пользователь. Если компьютер не входит в домен, то значение этой переменной совпадает с именем компьютера %COMPUTERNAME%;

USERNAME — переменная, указывающая на краткое имя пользователя (логин) при его регистрации на компьютере и во всей локальной сети. Это имя присваивается компьютеру при создании учётной записи администратором, и переназначать её нельзя!

USERPROFILE — переменная, указывающая на расположение каталога «личного профиля пользователя» компьютера, включающие персональные настройки и файлы данных программ, папки для хранения документов, изображений, музыки, видео записей, ссылок браузера, каталоги с «с быстрыми ссылками на файлы» и т.п. Местоположение этого каталога по-умолчанию: «C:\Documents and Settings\%USERMAME%» — в Microsoft Windows XP, и «C:\Users\%USERNAME%» — в Windows Vista/7/8;

windir — каталог с установленными файлами Microsoft Windows. Её значение обычно совпадает со значением переменной %SystemRoot%;

Переопределяемые переменные Windows NT

К переопределяемым переменным Windows NT относятся следующие переменные:

PATH — определяет пути, по которым будет производиться поиск исполняемых файлов, набранных в командной строке или запускаемой из графической оболочки. Аналогична переменной PATH в MS-DOS;

PATHEXT — определяет расширения исполняемых файлов, которые могут быть запущены из каталогов, указанных в переменной %PATH%. Значения по-умолчанию: «COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC»;

PROMPT — аналогична переменной PROMPT в MS-DOS. Значение по-умолчанию: «$P$G»;

TEMP — аналогична переменной TEMP в MS-DOS. Значение по-умолчанию: «%LOCALAPPDATA%\Temp»;

TMP — аналогична переменной TMP в MS-DOS. Значение по-умолчанию: «%LOCALAPPDATA%\Temp»;

Пользовательские переменные Windows NT

Пользовательские переменные Windows NT изначально не присутствуют в системе, а добавляются в неё по мере установки приложений на компьютер. К этим переменным автор относит:

BC3 — обозначает каталог с файлами Borland C/C++ v. 3. Значение по-умолчанию: «C:\BORLANDC»;

BC5 — обозначает каталог с файлами Borland C/C++ v. 5. Значение по-умолчанию: «C:\BC5»;

BORLFREE — обозначает каталог с файлами для «свободного компилятора» корпорации Borland. Значение по-умолчанию: «C:\Borland\BCC55»;

CLASSPATH — содержит путь к каталогу со «стандартными классами» окружения Java и Java машины корпорации Oracle. Значение по-умолчанию: «C:\Program Files\Java\jre6\lib\ext\QTJava.zip». Значение этой переменной изменять крайне не рекомендуется!

COMMANDER_DRIVE — содержит в себе имя диска, куда был установлен файловый менеджер Total Commander. Значение по-умолчанию: «C»;

COMMANDER_INI — содержит полный путь и имя файла инициализации Total Commander. Значение по-умолчанию: %COMMANDER_PATH%\wincmd.ini;

COMMANDER_PATH — содержит полный путь к каталогу с установленной программой Total Commander. Значение по-умолчанию: «C:\Program Files\Total Commander»;

GnuWin32 — переменная, указывающая на каталог с файлами расширения командной оболочки Windows NT. Задаётся пользователем самостоятельно, исходя из того, куда будет инсталлироваться модули этого расширения. Рекомендуемое автором значение: «C:\GnuWin32»;

PERL — содержит в себе каталог к файлам установленного интерпретатора ActiveState Perl. Значение по-умолчанию — «C:\Perl»;

PERLDB_OPTS — переменная, указывающая, какой порт TCP, и на каком сервере открывается для работы программного обеспечения СУБД Perl. Значение по-умолчанию: «RemotePort=127.0.0.1:2000»;

PYTHON — содержит в себе путь к установленному в системе интерпретатору ActiveState Python. Рекомендуемое значение по-умолчанию: «C:\Python25»;

QTJAVA — содержит в себе путь к виртуальной машине Oracle Java. Значение по-умолчанию: «C:\Program Files\Java\jre6\lib\ext\QTJava.zip», и менять его не рекомендуется;

SCRIPTS — указывает на каталог со «свободными» скриптами автора, написанных на разных языках программирования, и распространяющихся по лицензии Gnu GPL. Рекомендуемое значение: «C:\Scripts»;

UTIL — указывает на каталог компьютера, в котором находятся исполняемые файлы MS-DOS и MS-Windows, работающие в командной строке и по различным причинам не внесённые в другие каталоги. Этот каталог также должен быть указан в переменной %PATH%. Рекомендуемое значение по-умолчанию: «C:\UTIL».

Для задания имён переменных в Microsoft Windows 7 необходимо перейти в диалоговое окно: кнопка «Пуск» -> «Панель управления» -> «Система» -> «Дополнительные параметры системы» (см. рисунок C.002), затем в нём нажать кнопку: «Переменные среды».

Далее открывается диалоговое окно с двумя списками: «Переменные среды пользователя» и «Системные переменные» (см. рисунок C.003). Второй список можно редактировать только с правами администратора. Ниже каждого списка находятся кнопки с говорящим названием: «Создать…», «Изменить…» и «Удалить» переменную, выделенную в списке. При нажатии на кнопку «Изменить…» открывается диалоговое окно, показанное на рисунке C.004. В нём сверху указано имя переменной, а ниже — её значение, так что перепутать сложно.

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

Рис. C.002. Диалоговое окно «Дополнительные параметры системы»

Рис. C.003. Диалоговое окно «Переменные среды»

Рис. C.004. Окно изменения переменной окружения

Конфигурация переменных в Windows 7 меняется сразу же после закрытия всех окон панели инструментов, перезагрузку применять не нужно.

Резюме

В этом подразделе Вы познакомились с переменными командных оболочек операционных систем Microsoft. Теперь вперёд, к освоению командной строки 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, см. E.1.4.2), которое перенаправляется в файл List. После этого на экран выводится сообщение:

Printing List...

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

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

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

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

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

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

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

unset myfile

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

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

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

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

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

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

Эта команда обычно завершает назначение переменных в файлах «~/.bashrc», «~/.bash_profile», «/etc/profile» и «/etc/bashrc».

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

Переменная HOME

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

cd $HOME/letters

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

Переменная LOGNAME

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

Переменная TZ

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

Для Москвы:

TZ=EST4

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

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 обязательно необходимо включать имена каталогов /bin, /usr/bin и /usr/sbin. По-умолчанию переменная PATH выглядит так:

PATH=/bin:/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 минут).

Переменные перечня команд

К этим переменным BASH относят переменную, задающую количество запоминаемых команд в их перечне $HISTSIZE, и переменную $HISTFILE, определяющую файл с хранимым перечнем команд. По умолчанию их значения следующие:

HISTFILE=.bash_history

HISTSIZE=500

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 системе такой:

/ ---- home --- yuri --- letters --- new
         |        |        |
         |        |        |-------- old
        ...       |
                  |----- mail ------ myletters
                  |        |
                  |        |-------- irina
                  |        |
                  |        |-------- yulia
                  |        |
                  |        |-------- ilya
                  |
                  |----- bin
                  |
                 ...

Рис. C.005.Фрагмент дерева каталогов в 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, о которой будет рассказано в следующем разделе.

# System profile for basic ALT Linux system.
#
# It is recommended that this file be left unchanged to ease upgrades,
# and any local additions go into /etc/profile.d/ directory.

# Основной системный файл для базовой ALT Linux системы
#
# Рекомендуется это файл оставить без изменений для лёгкого апгрейда,
# и все локальные добавления вносить в каталог /etc/profile.d

# See also /etc/security/limits.conf
# Смотри также файл /etc/security/limits.conf
ulimit -Sc 0 >/dev/null 2>&1

umask 022

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

[ -n "$PATH" ] || PATH="/bin:/usr/bin:/usr/local/bin"
[ "$PATH" = "$HOME/bin" -o -z "${PATH##$HOME/bin:*}" -o \
  -z "${PATH%%*:$HOME/bin}" -o -z "${PATH##*:$HOME/bin:*}" ] ||
        PATH="$HOME/bin:$PATH"
[ "$PATH" = "/usr/X11R6/bin" -o -z "${PATH##/usr/X11R6/bin:*}" -o \
  -z "${PATH%%*:/usr/X11R6/bin}" -o -z "${PATH##*:/usr/X11R6/bin:*}" ] ||
        PATH="$PATH:/usr/X11R6/bin"
[ "$PATH" = "/usr/games" -o -z "${PATH##/usr/games:*}" -o \
  -z "${PATH%%*:/usr/games}" -o -z "${PATH##*:/usr/games:*}" ] ||
        PATH="$PATH:/usr/games"
[ "$PATH" = "/usr/sbin" -o -z "${PATH##/usr/sbin:*}" -o \
  -z "${PATH%%*:/usr/sbin}" -o -z "${PATH##*:/usr/sbin:*}" ] ||
        PATH="$PATH:/usr/sbin"
[ "$PATH" = "/sbin" -o -z "${PATH##/sbin:*}" -o \
  -z "${PATH%%*:/sbin}" -o -z "${PATH##*:/sbin:*}" ] ||
        PATH="$PATH:/sbin"
[ "$PATH" = "/opt/kde3/bin" -o -z "${PATH##/opt/kde3/bin:*}" -o \
  -z "${PATH%%*:/opt/kde3/bin}" -o -z "${PATH##*:/opt/kde3/bin:*}" ] ||
        PATH="$PATH:/opt/kde3/bin"
export PATH

# Определение дополнительных переменных

[ -n "$USER" ] || USER="`/usr/bin/id -un`"
[ -n "$LOGNAME" ] || LOGNAME="$USER"
[ -n "$MAIL" ] || MAIL="/var/mail/$LOGNAME"
export USER LOGNAME MAIL

HOSTNAME=`/bin/hostname`
HISTSIZE=999
HISTFILESIZE=9999
export HOSTNAME HISTSIZE HISTFILESIZE

# Добавление пользовательских настроек из каталога /etc/profile.d/
for f in /etc/profile.d/*.sh; do
        if [ -f "$f" -a -r "$f" -a -x "$f" -a -s "$f" -a ! -L "$f" ]; then
                . "$f"
        fi
done

unset f

Рис. C.006. Рекомендуемое содержимое файла /etc/profile

# base-files version 3.9-3

# To pick up the latest recommended .bash_profile content,
# look in /etc/defaults/etc/skel/.bash_profile
# Modifying /etc/skel/.bash_profile directly will prevent
# setup from updating it.

# The copy in your home directory (~/.bash_profile) is yours, please
# feels free to customize it to create a shell
# environment to your liking.  If you feel a change
# would be beneficial to all, please feel free to send
# a patch to the cygwin mailing list.

# ~/.bash_profile: executed by bash for login shells.

# source the system wide bashrc if it exists
if [ -e /etc/bash.bashrc ] ; then
  source /etc/bash.bashrc
fi

# source the user’s bashrc if it exists
if [ -e "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

# Set PATH so it includes user's private bin if it exists
if [ -d "${HOME}/bin" ] ; then
  PATH=${HOME}/bin:${PATH}
fi

# Set Additional System Path
#if [ -e "$HOME/PATH_Var.bat" ] ; then
#   source "$HOME/PATH_Var.bat"
#fi

# Set MANPATH so it includes users' private man if it exists
# if [ -d "${HOME}/man" ]; then
#   MANPATH=${HOME}/man:${MANPATH}
# fi

# Set INFOPATH so it includes users' private info if it exists
# if [ -d "${HOME}/info" ]; then
#   INFOPATH=${HOME}/info:${INFOPATH}
# fi

## User Defined Variables
##

# PS1 Definition
#if [ -e "$HOME/PS1_VAR.BAT" ] ; then
#   source $HOME/PS1_VAR.BAT
#fi

# EXINIT Definition
EXINIT='set nu ai'
export EXINIT PATH

Рис. C.007. Рекомендуемое содержимое файла ~/.bash_profile

# base-files version 3.9-3

# To pick up the latest recommended .bashrc content,
# look in /etc/defaults/etc/skel/.bashrc

# Modifying /etc/skel/.bashrc directly will prevent
# setup from updating it.

# The copy in your home directory (~/.bashrc) is yours, please
# feels free to customize it to create a shell
# environment to your liking.  If you feel a change
# would be beneficial to all, please feel free to send
# a patch to the cygwin mailing list.

# User dependent .bashrc file

# Environment Variables
# #####################


# TMP and TEMP are defined in the Windows environment.  Leaving
# them set to the default Windows temporary directory can have
# unexpected consequences.
unset TMP
unset TEMP

# Alternatively, set them to the Cygwin temporary directory
# or to any other tmp directory of your choice
# export TMP=/tmp
# export TEMP=/tmp

# Or use TMPDIR instead
# export TMPDIR=/tmp

# Shell Options
# #############

# See man bash for more options...

# Don't wait for job termination notification
# set -o notify

# Don't use ^D to exit
# set -o ignoreeof

# Use case-insensitive filename globbing
# shopt -s nocaseglob

# Make bash appends rather than overwrite the history on disk
# shopt -s histappend

# When changing directory small typos can be ignored by bash
# for example, cd /vr/lgo/apaache would find /var/log/apache
# shopt -s cdspell


# Completion options
# ##################

# These completion tuning parameters change the default behavior of bash_completion:

# Define to access remotely checked-out files over passwordless ssh for CVS
# COMP_CVS_REMOTE=1

# Define to avoid stripping description in --option=description of './configure --help'
# COMP_CONFIGURE_HINTS=1

# Define to avoid flattening internal contents of tar files
# COMP_TAR_INTERNAL_PATHS=1

# If this shell is interactive, turn on programmable completion enhancements.
# Any completions you add in ~/.bash_completion are sourced last.
# case $- in
#   *i*) [[ -f /etc/bash_completion ]] && . /etc/bash_completion ;;
# esac


# History Options
# ###############

# Don't put duplicate lines in the history.
# export HISTCONTROL="ignoredups"

# Ignore some controlling instructions
# HISTIGNORE is a colon-delimited list of patterns which should be excluded.
# The '&' is a special pattern which suppresses duplicate entries.
# export HISTIGNORE=$'[ \t]*:&:[fb]g:exit'
# export HISTIGNORE=$'[ \t]*:&:[fb]g:exit:ls' # Ignore the ls command as well

# Whenever displaying the prompt, writes the previous line to disk
# export PROMPT_COMMAND="history -a"


# Aliases
# #######

# Some example alias instructions
# If these are enabled they will be used instead of any instructions
# they may mask.  For example, alias rm='rm -i' will mask the rm
# application.  To override the alias instruction use a \ before, ie
# \rm will call the real rm not the alias.

# Interactive operation...
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Default to human readable figures
# alias df='df -h'
# alias du='du -h'

# Misc :)
# alias less='less -r'                          # raw control characters
# alias whence='type -a'                        # where, of a sort
# alias grep='grep --color'                     # show differences in colour

# Some shortcuts for different directory listings
# alias ls='ls -hF --color=tty'                 # classify files in colour
# alias dir='ls --color=auto --format=vertical'
# alias vdir='ls --color=auto --format=long'
# alias ll='ls -l'                              # long list
# alias la='ls -A'                              # all but . and ..
# alias l='ls -CF'                              #


# Functions
# #########

# Some example functions
# function settitle() { echo -ne "\e]2;$@\a\e]1;$@\a"; }

Рис. C.008. Рекомендуемое содержимое файла ~/.bash_profile


clear
echo "Good-bye, lucky"

Рис. C.009. Рекомендуемое содержимое файла ~/.bash_logout

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

Резюме

=== *** === *** ===

Между переменными таких разновидностей 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, двойные кавычки, одинарные кавычки и обратная косая черта подавляют вычисление специальных символов. Кроме того, для присваивания результатов команд переменным используются обратные кавычки.

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

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

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

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

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

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

unset myfile

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

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

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

В TC-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 при регистрации можно использовать три оболочки (см. введение к разделу «Переменные BASH»). Переменная SHELL определяет оболочку, загружаемую по умолчанию. В качестве строки передаётся каталог с файлами оболочки. Пример:

SHELL=/bin/bash

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

SHELL=/bin/pdksh

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

SHELL=/bin/tcsh

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

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

Переменная PATH

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

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

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

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

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

PATH=($PATH $HOME)

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

Переменная prompt

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

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

Таблица C.I.
Коды переменной prompt оболочки TCSH,
для отображения приглашения в командной строке

Код

Функция

%/ Текущий рабочий каталог.
%h, %!, ! Текущий номер в перечне.
%t Время суток.
%n Имя пользователя.
%d День недели.
%w Текущий месяц.
%y Текущий год.

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

set prompt = "%t %! $"

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

Переменная mail

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

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

Эта же переменная в TC-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 системе такой: (см. рисунок C.005)

задана переменная 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 имеется утилита history, которая регистрирует последние из выполненных команд. Если утилита history не активирована автоматически, её надо сначала активировать посредством команды set. В следующем примере утилита ведения перечня активируется и получает указание запоминать последние пять команд.

set history=5

Каждая из внесённых в перечень команд TC-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

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

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

$ cat my\!data

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

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

Файл .login

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

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

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

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

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

 Файл конфигурации .login

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

Рис. C.010. Пример файла конфигурации ~/.login

Файл .tcshrc

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

 Файл конфигурации ~/.tcshrcset

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'

Рис. C.011. Пример файла конфигурации ~/.tcshrc

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

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

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

# source .tcshrc

Файл .logout

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

# Файл конфигурации .logout

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

Рис. C.012. Пример файла конфигурации ~/.logout

Резюме

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

 

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

Содержание

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

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

DOS Linux
<диск>:\<путь> [<Пользователь>@<Компьютер> <Каталог>]$
<диск> $

Например:

1. A:\>

C:\WINDOWS\>

2. C>

3. [yuri@home ~]$

[root@home /usr/bin]#

4. $

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

Для 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-последовательности

Таблица C.IV.
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.

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

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

например:

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

4. Стандартное приглашение BASH:

PS1="[\u@\h \w]\$ "

5. «Цветное» приглашение»:

PS1="[\e[32;1m\u@\e[33;1m\h \e[37;1m\w\e[0m]\$"

Таблица C.V.
Специальные символы приглашений в BASH

Метасимвол Значение
\\ Обратный слеш
\d Текущая дата
\e ESC-последовательность
\h Текущий хост
\s Действующая оболочка и её версия
\t Время суток
\u Имя пользователя
\w Текущий (рабочий) каталог
\! Номер текущего события в перечне ранее введённых команд
\$ Будет показано приглашение «$» для всех пользователей компьютера, кроме суперпользователя root, для которого будет приглашение «#»

 

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

Содержание

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

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

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

Действия DOS UNIX
Стирание предыдущего символа Backspace Backspace, Del,Ctrl + n
Удаление текущего символа (на который указывает курсор) Del Ctrl + d
Вызов в командную строку предыдущей команды F3, <стрелка вверх> (Doskey)
<стрелка вверх>, Ctrl + E (Norton Commander)
!, <стрелка вверх>
Включение\выключение режима вставки символов Ins (Doskey)  
Очистка всей командной строки Esc Ctrl + u

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

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

doskey (опции)

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

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

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

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

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

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

Действие DOS Doskey NP *) NE **) Windows NetWare UNIX
               
Ввод текущей строки Enter Enter Enter Enter Enter Enter Enter
Ввод символа "конец файла" Ctrl+Z. F6 Ctrl+Z. F6 - ***) - - - -
Очистка всей командной строки и переход к следующей (новой) строке. Esc - - - - Esc -
Очистка всей командной строки - Esc Esc Esc Esc - Ctrl+U
Включение/выключение режима вставки символов - Ins Ins Ins      
Автоматическое «дописывание» команд и параметров
           
Tab
Вызов списка файлов по шаблону для автоматического заполнения
           
Esc+?
               
Движение курсора в командной строке:              
на символ влево - "стрелка влево" Ctrl+S "стрелка влево", Ctrl+S "стрелка влево" "стрелка влево" "стрелка влево", Ctrl+B
на символ вправо - "стрелка вправо" Ctrl+D "стрелка вправо", Ctrl+D "стрелка вправо" "стрелка вправо" "стрелка вправо", Ctrl+F
на слово назад - Ctrl + "стрелка влево" Ctrl + "стрелка влево" Ctrl + "стрелка влево" Ctrl + "стрелка влево" ? Esc b
на слово вперёд - Ctrl + "стрелка вправо" Ctrl + "стрелка вправо" Ctrl + "стрелка вправо" Ctrl + "стрелка вправо" ? Esc f
в начало строки - Home Ctrl+Home Home Home Home Ctrl+A
в конец строки - End Ctrl+End End End End Ctrl+e
               
Удаление:              
Стирание предыдущего символа Backspace Backspace Backspace Backspace Backspace Backspace Backspace, Del, Ctrl+D
Удаление текущего символа (на который указывает курсор) Del Del Del Del Del Del Ctrl+D
Удаление предыдущего слова - ? Ctrl + Backspace Ctrl + Backspace Ctrl + Backspace - -
Удаление команды до конца, начиная с позиции курсора - Ctrl+End     - - Ctrl+k
Удаление символов, начиная с символа, указанным текущим положением курсора, по символ, указанный Вами 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 + <номер> - - - ? ! <номер>
Сравнение образца со страницами из перечня
           
Esc Tab
               
Прочие сочетания              
Печать на принтере содержимого экрана (однократная) PrtScr PrtScr PrtScr PrtScr - - ?
Печать на принтере всех символов, набранных на клавиатуре и выводимых на экран Ctrl+PrtScr, Ctrl+P Ctrl+PrtScr, Ctrl+P 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+F1 Ctrl+Alt+F1 Ctrl+Alt+F1 Ctrl+Alt+F1 - - -
Переключение на национальный формат клавиатуры 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 — те же оболочки с выключенными панелями. Windows 95 - пункт Run (Выполнить) операционных систем Microsoft Windows 95 — Windows 8. Novell — операционные системы Novell NetWare версий 3.1x и 4.xx. UNIX — различные клоны UNIX (IRIX, SCO UNIX, HP-UX, Linux).

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

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

Кроме того, в оболочке Linux BASH есть возможности автоматического завершения ввода. Так, если Вы ввели неполную команду или неполное имя файла в качестве параметра команды, то при нажатии на клавишу «Tab» операционная система сама дополнит имя команды или имя файла. При этом нажимать на клавишу Tab при вводе команды можно неограниченное число раз. Приведём условный пример (на практике, прочитав эту книгу, Вы будете делать эту операцию другим, более быстрым способом). Пусть Вам нужно скопировать файл hostname из каталога /etc в каталог /home/yuri/tmp. Для этого в командной строке нужно набрать команду:

$cp /etc/hostname /home/yuri/tmp

Для быстрого набора этой строки необходимо нажимать следующие клавиши:

cp «Пробел» /e «Tab» /hostname «Пробел» /h «Tab» /y «Tab» /t «Tab» «Enter»

Как видите, это значительно быстрее, и вы никогда не «промахнётесь» с командой.

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

Командная оболочка BASH также может выполнить поиск среди имён файлов для выдачи результатов частичного совпадающих с образцом (при неполном вводе параметров в командной строке). Эти файлы будут найдены только в текущем каталоге. Для этого нужно нажать клавиши «Esc» и «?». В следующем примере нажатие этих клавиш приводит к формированию списка возможных имён файлов. Затем оболочка повторно выводит на экран командную строку, в которой можно ввести полное имя файла, либо дополнительные символы и клавишу «Tab».

$ ls

document docuwiki

$ cat doc ESC ?
document
docuwiki
$ cat docuwiki

В BASH имеется штатная команда history, которые регистрирует самые последние из выполненных команд. Команды нумеруются, начиная с единицы. Существует программное ограничение на количество сохранённых записей (по-умолчанию оно равно 500 старых команд). Более старые команды удаляются из этого буфера. Чтобы получить перечень команд, необходимо набрать команду history и нажать клавишу «Enter». Пример:

$ history
mv mydoc document
vi mydoc
ls
cd ~/Documents

Выбирать нужную команду можно с помощью клавиш со стрелками. После появления команды в командной строке её можно редактировать так же, как и новую команду.

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

$ !2
$ !vi

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

$ !-3

Если команда неоднозначна, то исполняется последнее событие. Указание «пустой» команды без параметров исполнит последнее событие, в нашем случае — cd ~/Documents.

Для обозначения события можно использовать и образец. Образец заключается между вопросительными знаками. В следующем примере образец ?docu? обозначает первую команду, mv mydoc document.

$ !?docu?
mv mydoc document

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

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

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

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

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

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

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

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

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

в DOSdoskey <имя макроса>=

в UNIXunalias <имя псевдонима>.

C.3.7. Резюме

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

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

Содержание

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

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

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

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

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

Таблица C.VIII.
Примеры соответствия шаблонов файлам

Шаблон Соответствие
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.IX.
Сводка употребления шаблонов файлов

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

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/Windows, так и UNIX) может быть организован двумя принципиально разными способами. Первый способ — это прямое программирование устройств ввода/вывода (дисковода, экрана, модема, клавиатуры). Он может быть организован на различных уровнях (непосредственное программирование устройств, использование сервисных средств операционной системы, смешанный подход и т.д.), но суть его при этом не меняется. Каждая программа, написанная с использованием этого способа, может работать только с этим устройством и ни с каким другим. В настоящее время используется именно этот способ. Именно с помощью этого подхода (точнее, путём «косвенного» программирования периферийных устройств через драйверы этих устройств) и реализован классический WIMP - интерфейс, о котором уже было много сказано в предыдущей главе. Он позволяет создавать красивые и довольно содержательные средства общения с пользователем (меню, окна и тому подобное), а современные технологии позволяют программе при установке автоматически настраиваться на установленное на компьютере оборудование. Но у этих систем есть недостаток: они не могут принять данные с устройств и передать данные устройствам, для работы с которыми они не созданы. Например, нельзя данные вводить с модема, если программа работает только с клавиатурой. Чтобы осуществить это, используют другой способ: ввод/вывод с использованием потоков. В этом случае каждое устройство рассматривается операционной системой как файл, куда можно поместить и откуда можно взять информацию. Так же, как информация, записанная в файл, рассматривается операционной системой как единое целое, не зависимо от способа записи его на диске, так и физическая реализация процесса ввода/вывода информации устройством никак не отражается на работе пользователя.

Примечание: в мобильной операционной системе Android реализована система перенаправления вывода из одного приложения с 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 7 с NTFS, и в Novell NetWare с NWFS, и в Linux с ext4!

C.5.10. Резюме

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

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

Таблица C.X.
Обозначение потоков в UNIX

Номер Название потока в UNIX Устройство
0 Стандартный поток ввода консоль, клавиатура
1 Стандартный поток вывода консоль, дисплей
2 Стандартный поток ошибок дисплей

Таблица C.XI
Обозначение Устройств в MS-DOS/Windows

Устройство Обозначение в DOS.
Консоль CON
1-й параллельный порт LPT1
2-й параллельный порт LPT2
Принтер (синоним LPT1) PRN
1-й последовательный порт COM1
2-й последовательный порт COM2
3-й последовательный порт COM3
4-й последовательный порт COM4
Модем (синоним COM1) AUX
Пустое устройство NUL

Таблица C.XII.
Обозначение символов перенаправления

Символ Смысл перенаправления
> Перенаправляет стандартный вывод на другое устройство или в файл. Содержимое файла при этом теряется
>> Перенаправляет стандартный вывод в файл. Содержимое файла не теряется. Запись идёт в режиме добавления
< Осуществляет (перенаправляет) стандартный ввод с другого устройства или из файла
| Символ конвейерной обработки. Выходные данные работы программы, расположенной слева, передаются на вход программы, расположенной справа от знака конвейера

C.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. Резюме

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

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