dt=Text ПРИЛОЖЕНИЕ IV 0 Описание языков командных оболочек MS-DOS Command Shell и bash shell Linux. Содержание 03.07.04.01. Работа в командной строке 03.07.04.02. Редактирование командной строки. 03.07.04.03. Классификация файлов Введение В этом и последующем приложении будет рассказано о важном элементе работы с операционными системами: работе в командной строке. Не смотря на то, что большинство современных операционных систем используют для своей работы и настройки WIMP-интерфейс, необходимость в командной строке не отпала. В командной строке: * задаются переменные окружения (нужные не только программам, работающие в командной строке); * запускаются программы проверки и диагностики оборудования, сетей и т.д. Аналогичные программы с WIMP-интерфейсом имеют избыточный "вес" (в мегабайтах). * запускаются программы, специально разработанные по технологии командной строки с целью облегчения переноса приложений между системами. Так, многие программы-компиляторы (программы для создания других программ), программы-архиваторы (для сжатия данных) в своём составе обязательно имеют программу, работающую в командной строке, над которой "надстроена" оболочка с WIMP-интерфейсом. Кроме того, при сбое операционных систем графическая оболочка может совсем не загружаться, и у пользователя остаётся единственная возможность — работать в командной строке. В данном приложении рассматриваются основные понятия технологии командной строки: командный процессор, переменные окружения, режима, приглашение командной строки. 5P9i0s8y19Z dt=Text 03.07.04.01. Работа в командной строке 1 операционной системы Содержание 03.07.04.01.1. Введение 03.07.04.01.2. Shell и переменные окружения 03.07.04.01.2.1. Переменные окружения Command.com 03.07.04.01.2.2. Переменные окружения NDOS.com 03.07.04.01.2.2.1. Задание переменных окружения. 03.07.04.01.2.2.2. Переменная PATH 03.07.04.01.2.2.3. Другие переменные окружения NDOS.com 03.07.04.01.3. Переменные BASH 03.07.04.01.4. Приглашение операционной системы. 5P9i0s8y19Z dt=Text 03.07.04.01.1. Введение 2 После загрузки операционная система готова к работе. Под её управлением можно запускать различные программы системного и прикладного назначения. Большинство пользователей работают с операционной системой не напрямую, а с помощью файловых (типа Norton Commander, Volcov Commander, Far, Dos Navigator и т.п.) или операционных оболочек (типа Windows 3.11, Dos Shell и других.) Но, во-первых, некоторые программы по разным причинам не выполняются при загруженных оболочках. Во-вторых, вследствие большого количества операционных оболочек трудно ориентироваться в них. В-третьих, не всегда оболочку можно запустить (например, при временном выходе в операционную систему из выполняемой ей же программы.) При временном выходе в DOS поверх программы загружается файл Command.com, и оперативной памяти становится недостаточно для работы операционной оболочки. В=четвёртых, при сбоях в операционной системе Microsoft Windows95/98 иногда доступна загрузка только в командной строке. Указанное выше позволяет сделать вывод о необходимости умения пользоваться командной строкой операционной системы. В этой части даётся как бы "мультилингва" - описания служебных программ для работы с файлами в операционных системах Microsoft (MS-DOS, MS Windows 95/98/NT), в операционной системе IBM OS/2 и LINUX. Для более подробной информации смотри документацию к операционным системам. 5P9i0s8y19Z dt=Text 03.07.04.01.2. Shell и переменные окружения 2 После загрузки ядра операционной системы (для DOS это файлы IO.sys и MSDOS.sys) загружается так называемая программная оболочка, (или командный файл Command.com для систем MSDOS). В этой программной оболочке (или Shell) находятся интерпретаторы команд операционной системы и переменные окружения. Эти переменные окружения определяют приглашение операционной системы, пути, по которым ищутся вспомогательные файлы и программы, настройки аппаратных средств и опции вывода оглавления каталога. Для операционной системы MS-DOS существует две оболочки. Первая, выбираемая по умолчанию и входящая в состав дистрибутива этой системы, является программа Command.com. Другой оболочкой является входящий в состав Norton Utilities for DOS v. 6.0 - 8.0 оболочка NDOS.com. Для UNIX - подобных операционных систем используется несколько различных оболочек. В частности, для LINUX наиболее часто используемые оболочки - это Bourne Again Shell (BASH) и TCSH - shell. Все эти оболочки имеют разные переменные окружения. Описанием этих переменных автор и начнёт свой рассказ о командной строке операционных систем. Также следует отметить, что в [Р. Петерсен. LINUX: руководство по операционной системе //Изд. группа BHV, Киев, 1997. - 688 с.] на странице 446 даётся следующая классификация переменных окружения, которой автор и будет придерживаться. 1. Системные переменные - специальные переменные, которые нельзя переопределять. 2. Переопределяемые переменные - специальные переменные, которые можно переопределять. 3. Пользовательские переменные - переменные, присутствие которых в окружении не обязательно. Содержание 03.07.04.01.2.1. Переменные окружения Command.com 03.07.04.01.2.2. Переменные окружения NDOS.com 03.07.04.01.2.2.1. Задание переменных окружения. 03.07.04.01.2.2.2. Переменная PATH 03.07.04.01.2.2.3. Другие переменные окружения NDOS.com 5P9i0s8y19Z dt=Text 03.07.04.01.2.1. Переменные окружения. 3 Command.com 03.07.04.01.2.1. Переменные окружения Command.com Итак, перечислим основные переменные окружения MS-DOS: 1. Переменная местонахождения командного процессора COMSPEC. 2. Переменная приглашения командной строки PROMPT. 3. Переменная приглашения командной строки Windows 3.1x (только в MS-DOS v. 6.0 - 6.22) WINPMT. 4. Переменная опций вывода оглавления каталога, действующих по-умолчанию DIRCMD. 5. Переменная путей текущей конфигурации DOS (только для MS-DOS v. 6.0 и старше) CONFIG. 6. Переменная путей для поиска исполняемых файлов PATH. 7. Переменные для каталогов с временными файлами TEMP и TMP. 8. Специальные переменные окружения, требуемые прикладными пакетами. Примечание: системные переменные графической оболочки Windows здесь не рассматриваются. Рассмотрим эти переменные поподробнее: Системные переменные DOS 1. Переменная CONFIG определяет, какая из указанных в файлах Config.sys и Autoexec.bat конфигураций в настройке операционной системы активна. Эта опция не несёт особого смысла и используется в файле Autoexec.bat в строке goto %config%. В этой строке определяется переход к той или иной последовательности загрузки резидентных программ для заданной конфигурации файла Config.sys. Для пользователя же эта переменная носит чисто информационный характер. 2. Переменная COMSPEC. Указывает путь местонахождения командного файла (или оболочки DOS). Этот путь соответствует пути для командного файла, указанного директивой SHELL в файле Config.sys. Автор считает, что существует только одна причина явно менять эту переменную - в случае перемещения командного файла. Пример; с дискеты загружается операционная система фирмы Microsoft. С целью обеспечения правильной работы системы при смене дискеты в памяти компьютера создаётся виртуальный диск размером 2 Мбайта следующей командой файла Config.sys: DEVICE=RAMDRIVE,SYS 2048 512 128 /E В файл же Auoexec.bat вставляются следующие строчки: copy a:\command.com D:\ set comspec=D:\command.com После этого обращение к командному файлу всегда будет происходить на виртуальный диск D. В дисковод можно вставлять любые дискеты - система на "зависнет". 3. Переменная TZ - устанавливает часовой пояс для рабочей станции, работающей в глобальной сети. Её синтаксис: set TZ=zzzhhdst , где zzz - зона местного времени, hh - отставание от Гринвича, dst - зона "летнего" времени. Так, для Москвы: SET TZ=EST3EDT Вообще EST определяет отставание от Гринвича (восточная долгота), PST - опережение Гринвича (западная долгота), а EDT/PDT - учёт перехода на летнее время. Остальные переменные рассматриваются в соответствующих разделах, посвящённых различным аспектам работы командной оболочки DOS. 03.07.04.01.2.1.1. Задание переменных окружения. Команда SET В основном все переменные окружения оболочки MS-DOS определяются с помощью команды SET в файле Autoexec.bat. Исключением являются следующие переменные: * CONFIG - определяется в файле Config.sys, * PROMPT - определяется отдельной командой DOS - оболочки, * PATH - задаётся отдельно в файле Autoexec.bat. Команда SET без параметров выдаёт текущее состояние переменных окружения. Команда SET <имя>=<значение> присваивает переменной с идентификатором <имя> строку <значение>. В строке <значение> делается различие между прописными и строчными буквами, а в имени переменной такого различия нет. Команда SET <имя>= отменяет все значения переменной с идентификатором <имя> и удаляет её из системного окружения. Пример: SET TMP=C:\TMP присваивает значение переменной TMP, которые старые прикладные программы фирмы Microsoft использовали для определения каталога с временными файлами. set tmp=C:\TMP та же команда, набранная строчными буквами. SET FILE=scandisk.log переменной FILE присваивается имя файла scandisk.log. Теперь эту переменную можно использовать вместо имени этого файла, например: type %FILE% | more - выдаёт поэкранную распечатку файла scandisk.log Замечание 1. Автор не советует использовать в команде set никаких лишних пробелов, Так, из-за указания пробелов перед знаком и после знака «=» в операционной системе MS-DOS v. 6.0 в команде set TMP = C:\TMP переменная TMP у автора не добавилась в окружение DOS. Указание же пробелов после знака "=" при определении переменной PATH в любой операционной системе всегда приводит к очистке этой переменной. Замечание 2. Задание и сброс переменных окружения возможно только в файле Autoexec.bat и в "чистой" командной строке MS-DOS. Задание же переменных окружения в файловых оболочках не приведёт к изменению значений переменных окружения. В операционных же оболочках (и в графических оболочках MS WINDOWS 95/98/NT) изменение переменных окружения произойдёт только на текущий сеанс эмуляции MS-DOS. 03.07.04.01.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. 03.07.04.01.2.1.3. Другие переменные окружения Command.com Наиболее часто используются следующие переменные окружения DOS: TEXT - определяет каталог со служебными файлами Лексикона. Если она не указана, используется каталог с программой lexicon. CHIFILES - определяет каталог со служебными файлами ChiWriter. Если она не указана, используется каталог с программой cw. 87 - указывает программам, написанных на TurboC и Turbo Pascal, использовать (set 87=Y) или не использовать (set 87=N) команды сопроцессоров i80x87. Если переменная не используется, то инструкции используются только при наличии в системе сопроцессора. PKTMP - указывает имя каталога, в котором архиватор PKZIP создаёт свои временные файлы. INCLUDE - указывает имена каталогов (разделённых ";"), в которых происходит поиск файлов заголовка компилятором Microsoft. LIB - указывает имена каталогов (разделённых ";"), в которых происходит поиск библиотек и объектных файлов при их сборке в исполняемый файл командой link ("редактор связей"). NC - указывает имена каталогов со служебными файлами Norton Commander. По-умолчанию - каталог с файлом nc.com (nc.exe в более поздних версиях). VC - указывает имена каталогов со служебными файлами Volkov Commander. По умолчанию - каталог с файлом vc.com. NU - указывает имена каталогов со служебными файлами Norton 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 и его переменными окружения. 5P9i0s8y19Z dt=Text 03.07.04.01.2.2. Переменные окружения. 3 NDOS.com 03.07.04.01.2.2. Переменные окружения NDOS.com О программе NDOS DOS, дисковая операционная система, состоит из нескольких программных файлов, составляющих её ядро. Для MS-DOS это IO.SYS, MSDOS.SYS, и COMMAND.COM (в PC-DOS они называются IBMBIO.COM, IBMDOS.COM, COMMAND.COM). Первые две программы управляют работой компьютера, а третья, COMMAND.COM, формирует приглашение пользователя, команды прерывания, загружает на выполнение программы, и интерпретирует пакетные файлы. COMMAND.COM является командным процессором по-умолчанию при загрузке компьютера. NDOS заменяет COMMMAND.COM. Вы найдёте в NDOS поддержку большого множества возможностей, включая усовершенствованную команду DIR, любую команду можно выбрать и активизировать, изменив её вид. При этом NDOS полностью совместима с COMMAND.COM. NDOS является оболочкой DOS (т.е. программой, которая выдаёт доступ к DOS функций и команд.) Переменные среды Переменные среды ссылаются на команды, если установить перед именем переменной знак процента. Двойной знак процента (%%) означает собственно знак процента. Переменная окружения завершается либо другим знаком процента (%), или недопустимым знаком. Чтобы поместить имя переменной (а не её значение) в команду, Вы должны начать имя с двух знаков процента. Переменные среды могут содержать любой алфавитно-цифровой знак, плюс знак подчёркивания (_) и знак доллара ($). Кроме того, можно включать любую последовательность символов в имя переменной, если заключить её имя в квадратные скобки. Например %[AB##1] ссылается на переменную с именем AB##1. Некоторые имена переменных имеют специальное значение в NDOS. Только CMDLINE, DIRCMD, PATH и TEMP действительно сохраняются в системном окружении; они являются внутренними и не могут быть просмотрены и модифицированы командами SET. 03.07.04.01.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 <имя переменной или псевдонима> 03.07.04.01.2.2.2. Переменная PATH- Переменная PATH (внутренняя). Эта переменная почти аналогична переменной PATH в оболочке COMMAND.COM, но имеется некоторые отличия, о которых будет сказано ниже. Синтаксис: PATH [[<Диск>:]<Путь_1>][;[[<Диск>:]<Путь_2>]...] * для определения переменной PATH; PATH ; * для аннулирования переменной PATH; PATH * для просмотра списка путей. Как и в оболочке COMMAND.COM, директории разделяются точкой с запятой, а пути преобразуются к верхнему регистру. В отличие от оболочки COMMAND.COM, набранное в командной строке имя переменной выдаёт список путей, а не аннулирует переменную. Для аннулирования переменной необходимо после имени переменной указывать точку с запятой. Текущий путь можно редактировать программой ESET. 03.07.04.01.2.2.3. Другие переменные окружения NDOS.com # — возвращает число аргументов в командной строке пакетного файла. Она может быть использована только в командном файле. ? — возвращает код завершения последней внешней команды. CMDLINE — командная строка, расширенная до 255 символов. Она может дать доступ к внешней программе при поиске в системном окружении. DIRCMD — обозначает стандартный формат команды DIR. Она содержит в себе допустимую комбинацию ключей этой программы. PATH — указывает NDOS, в каких директориях необходимо искать выполняемые файлы операционной системы (.COM, .EXE, .BTM и .BAT), не находящихся в текущей директории. Некоторые приложения (например, Лексикон для ДОС) используют эту переменную для поиска своих файлов. TEMP — указывает NDOS, куда он должен записывать временные файлы. _BG — выдаёт фоновый цвет экрана на текущей позиции курсора (возвращает трёхсимвольную строку). _COLUMNS — означает текущее число столбцов экрана. _CPU — означает тип центрального процессора, выдавая следующие величины: 86 8086 или 8088 186 80186 или 80188 200 NEC V20 или V30 286 80286 386 80386 или 80486 _CWD — текущая директория в формате <Диск>:\<Путь>\ _CWDS — текущая директория в формате <Диск>:\<Путь> (без обратной косой черты в конце). _CWP — текущая директория в формате \<Путь>\ _CWPS — текущая директория в формате \<Путь> (без обратной косой черты в конце). _DATE — содержит текущую системную дату в формате, определяемом в директиве COUNTRY в файле CONFIG.SYS. _DISK — текущий диск (например, С). _DOSVER — текущая версия DOS. _DOW — текущий день недели (Mon, Tue, Wed, Thu, Fri, Sat, Sun). _FG — основной цвет экрана на текущей позиции курсора (возвращают трёхсимвольную строку). _MONITOR — возвращает тип монитора: монохромный MONO или цветной COLOR. _NDP — указывает тип сопроцессора, возвращая строку: 000 нет инсталлированного сопроцессора. 087 8087 287 80287 387 80387 или 80486 _ROWS — возвращает текущее число строк на экране. _SHELL — номер уровня текущей оболочки в стеке. Начальная оболочка имеет номер 0. Если нет стека оболочек, переменная выдаёт значение 99. _TIME — содержит текущее системное время в формате, установленном директивой COUNTRY в файле CONFIG.SYS. _VIDEO — возвращает MONO, CGA, EGA, VGA для типа видеокарты. Резюме В этом подразделе Вы познакомились с переменными командного процессора NDOS. Теперь вперёд, к освоению командной строки UNIX! Первая остановка — переменные командной оболочки BASH. 5P9i0s8y19Z dt=Text 03.07.04.01.3. Переменные BASH 2 Содержание 03.07.04.01.3.1. Определение переменной 03.07.04.01.3.2. Переназначение переменной и отмена его значения. Вывод текущих значений переменных. 03.07.04.01.3.3. Экспорт переменных 03.07.04.01.3.4. Системные переменные BASH 03.07.04.01.3.5. Переопределяемые переменные 03.07.04.01.3.6. Переменные режима 03.07.04.01.3.7. Пользовательские переменные. 03.07.04.01.3.8. Резюме. В отличие от 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, о которых будет сказано ниже. 5P9i0s8y19Z dt=Text 03.07.04.01.3.1. Определение переменной 3 Синтаксис определения переменной в BASH следующий: <имя_переменной>=<константа> В качестве константы используется так называемая символьная константа - набор ASCII - символов, заключённых в двойные кавычки (как в языке Си, на котором написана данная операционная система). Регистр букв, набранных как в имени переменной, так и в константе, существен. Так, в отличие от DOS, переменные me, ME и Me различны! Пример определения переменной: >myfile="List" В этом примере переменной myfile присваивается строка List. Теперь переменную myfile можно использовать вместо строки List. В качестве примера приводим следующие фрагменты команд, набранных в командном приглашении. ls > $myfile echo "Printing $myfile..." lpr $myfile В этом примере вначале создаётся оглавление каталога (команда ls), которое перенаправляется в файл List. После этого на экран выводится сообщение: Printing List... и на принтер выдаётся содержание файла List (т.е оглавления текущего каталога, см. первую команду). Заметим, что перед использованием переменной перед ней ставится знак доллара, указывающий, что вместо символов (в данном случае myfile) используется строковая переменная. 5P9i0s8y19Z dt=Text 03.07.04.01.3.2. Переназначение переменной 3 и отмена его значения. Вывод текущих значений переменных Вывод текущих значений переменных Для назначения переменной нового значения используется та же конструкция: <имя_переменной>=<новое_значение> где новое значение - константа. Для отмены назначения переменной и удаления этой переменной из окружения используется команда unset. Например, unset myfile удаляет из окружения переменную myfile. Вывод текущих значений переменных выдаётся с помощью команды set, а только специальных переменных окружения - командой env. 5P9i0s8y19Z dt=Text 03.07.04.01.3.3. Экспорт переменных 3 Экспорт переменной в другую оболочку осуществляется в BASH с помощью команды export. Её синтаксис: export <имя_переменной>[{ <имя_переменной>}] т.е. представляет собой команду и список экспортируемых переменных, разделённую пробелами. Переменные перед этим должны быть определены. 5P9i0s8y19Z dt=Text 03.07.04.01.3.4. Системные переменные BASH 3 Переменная HOME Переменная HOME определяет путевое имя Вашего начального каталога. Этот каталог автоматически создаётся при создании администратором Ваших учётных данных, а этой переменной назначается правильное значение этого каталога. Эта переменная используется в том случае, когда нужно задать путевое имя начального каталога. Например, пусть переменной HOME присвоено значение /home/yuri. Тогда следующая команда: cd $HOME/letters приведёт к переходу в каталог /homr/yuri/letters. Переменная LOGNAME Данная переменная содержит Ваше регистрационное имя. Так, для пользователя yuri значение этой переменной будет yuri. Её следует использовать в тех случаях, когда надо указать регистрационное имя. Переменная TZ Эта переменная определяет часовой пояс, используемый в системе. Для Москвы: TZ=EST3EDT Значение по-умолчанию - TZ=PST8PDT Задание зоны аналогично для переменной TZ в DOS. 5P9i0s8y19Z dt=Text 03.07.04.01.3.5. Переопределяемые переменные 3 Переменная SHELL В операционной системе LINUX при регистрации можно использовать три оболочки (см. введение к разделу "Переменные BASH"). Переменная SHELL определяет оболочку, загружаемую по умолчанию. В качестве строки передаётся каталог с файлами оболочки. Пример: SHELL=/bin/bash задаёт в качестве оболочки, загружаемой по-умолчанию, BASH. SHELL=/bin/pdksh задаёт в качестве оболочки, загружаемой по-умолчанию, PDKSH-shell. SHELL=/bin/tcsh задаёт в качестве оболочки, загружаемой по-умолчанию, TCSH. Заметим, что смена оболочки произойдёт не сразу, а только после перезагрузки системы. Переменная PATH Данная переменная содержит имена каталогов, в которых содержатся выполняемые программы. При записи программы на исполнение в каталогах, заданных этой переменной, ищутся файлы с данным именем, а после нахождения этого имени оно "достраивается" до полного имени и только после этого запускается на выполнение. В отличие от DOS, если текущий каталог не указан в переменной PATH, из него также нельзя запускать файлы. В переменной PATH все каталоги записываются без пробелов, а разделяются знаком ":" (двоеточие). Знак двоеточие в конце означает текущий каталог. В переменную PATH обязательно необходимо включать имена каталогов /usr/bin и /usr/sbin. По-умолчанию переменная PATH выглядит так: PATH=/usr/bin:/usr/sbin: то есть в ней указаны вышеперечисленные каталоги и рабочий каталог. Добавление в переменную PATH новых каталогов происходит, как показано в следующем примере: PATH=$PATH:$HOME: В данном примере в конец списка каталогов PATH добавляется домашний каталог. Переменные PS1 и PS2 Данные переменные определяют вид приглашения операционной системы: основной и дополнительный. Переменные MAIL и MAILCHECK В операционную систему LINUX встроена возможность использования электронной почты, которая для других операционных систем реализована с помощью дополнительных программных пакетов. Однако для того, чтобы электронная почта могла функционировать, системе должно быть указано местоположение почтового ящика, В этот почтовый ящик, который есть у каждого пользователя LINUX, система помещает поступившие на его имя сообщения. Обычно почтовый ящик создаётся при создании учётных данных пользователя, и система автоматически прописывает это имя в своих файлах конфигурации. Однако это местоположение можно поменять. Для этого существует переменная MAIL. В переменной MAIL указывается путь для основного почтового ящика. Поскольку у каждого пользователя должен быть хотя бы один почтовый ящик, эта переменная должна присутствовать обязательно. Переменная MAILCHECK задаёт промежуток времени, по истечении которого система будет предупреждать Вас о получении почты. По-умолчанию этот промежуток устанавливается в 600 секунд (10 минут). Время указывается в секундах. Пример использования переменных для управления электронной почтой: MAIL=/var/mail/yuri >MAILCHECK=1200 В данном примере основной почтовый ящик переназначается в каталог /var/mail/yuri, уведомление о поступившей почте будет посылаться каждые 1200 секунд (20 минут). 5P9i0s8y19Z dt=Text 03.07.04.01.3.6. Переменные режима 3 В 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? . Однако использование регулярных выражений будет запрещено! 5P9i0s8y19Z dt=Text 03.07.04.01.3.7. Пользовательские переменные. 3 Переменная MAILPATH Эта переменная используется для указания путей для поиска дополнительных почтовых ящиков. Как уже указывалось в разделе 03.07.04.01.3.5., в системе для каждого пользователя должен быть создан хотя бы один почтовый ящик. Однако не возбраняется каждому пользователю иметь несколько дополнительных почтовых ящиков, местонахождение которых и определяется этой переменной. Однако данная переменная не создаётся автоматически при создании учётных данных пользователя, и должна определяться отдельно. В приведённом ниже примере задаётся путь для дополнительного почтового ящика, находящегося в директории /home/mail/yuri, если значение переменной LOGNAME равно yuri: MAILPATH=/home/mail/$LOGNAME Переменная CDPATH Аналога этой переменной нет в не UNIX-подобных операционных системах. С помощью этой переменной определяются каталоги, в которых команда cd ищет подкаталоги. Пусть, например, фрагмент дерева каталогов в LINUX системе такой: задана переменная CDPATH: CDPATH=/home/yuri/mail и текущим является каталог /home/yuri/letters/old. Тогда следующая команда: cd myletters вызовет не ошибку, как при отсутствии переменной CDPATH, а вызовет переход в каталог /home/yuri/mail/myletters. Команда же cd old вызовет ошибку, так как путь к директории /home/yuri/letters не прописан в пути CDPATH. Пользоваться этой переменной следует с осторожностью! Дело в том, что если указать в переменной CDPATH каталоги, имеющие подкаталоги с одинаковыми именами, то действие команды cd не предсказуемо! Переменная TERM Переменная определяет тип подключённого терминала. Эта информация нужна таким программам, как стандартные редакторы для определения режима ввода/вывода. Дело в том, что на разных терминалах (или консоли, как этот термин расшифровывается в MS-DOS) существуют различные раскладки клавиатуры, различные кодировки и виды символов. Как правило, если Вы регистрируетесь в системе с терминала, она сама правильно определяет его тип. Однако если Вам надо явно указать его вид, необходимо явно указать его значение. Аналогом этой переменной в DOS могут служить команды mode, chcp, keyb, программы - русификаторы экрана и клавиатуры и другие программы, управляющие переназначением клавиш и управляющие выводом символов на экран. Переменная EXINIT Данная переменная содержит команды, позволяющие конфигурировать редакторы Ex и Vi. Когда Вы вызываете эти редакторы, команды, указанные в переменной EXINIT, выполняются. Команды пишутся в одну строку, в кавычках. Опции с одинаковым префиксом записываются подряд. 5P9i0s8y19Z dt=Text 03.07.04.01.3.8. Резюме 3 В данном разделе Вы познакомились с основными переменными BASH: основными и переопределяемыми, их задание, отмену, переопределение. Однако BASH не является оболочкой по умолчанию даже в Linux. В мире *nix наибольшее распространение получила другая оболочка — TCSH, о которой будет рассказано в следующем разделе. 5P9i0s8y19Z dt=Text 03.07.04.01.4. Приглашение 2 операционной системы В случае, когда операционная система готова к диалогу с пользователем, она выдаёт на экран приглашение. Основные приглашения имеют вид: DOS «диск»:\«путь»> LINUX «имя пользователя»@«имя компьютера» «имя каталога»$ Например; 1. A:\> C:\WINDOWS\> 2. yuri@localhost.localdomain ~$ Внешний вид приглашения можно изменить. Для MS-DOS в качестве элемента приглашения могут быть: Знак "=". Знак "|". Знак "$". Знак ">". Знак "<". Текущее время. Текущая дата. Текущий диск и каталог. Текущий диск. Версия MS-DOS. Переход на следующую строку. Также в системное приглашение MS-DOS можно вставлять другие ASCII - последовательности. В случае установки драйвера ANSI.SYS в файле Config.sys в приглашении также можно использовать и Esc - последовательности. В системе LINUX есть основное и дополнительное приглашение. Дополнительное приглашение появляется при записи длинной команды, не помещающейся в командной строке. Каждая новая строка начинается с нового дополнительного приглашения. В приглашении LINUX могут быть любые символы и следующие последовательности: Текущая дата. Действующая оболочка и её версия. Время суток. Имя пользователя. Текущий (рабочий) каталог. Для установки желаемого приглашения необходимо поменять некоторые переменные окружения. Как это сделать - смотри ниже. 03.07.04.01.4.1. Приглашение операционной системы MS-DOS По-умолчанию системное приглашение операционной системы MS-DOS выглядит как A> где A - номер текущего диска. Его можно сменить с помощью команды *PROMPT *. Эта команда является внутренней, то есть встроенной в командный процессор Command.com. Формат команды: prompt текст Таблица возможных параметров в тексте команды prompt, а также Esc - последовательности, которые можно указать в этой команде, приведены в списке ниже: Символ Команда в системном окружении $Q Вывод символа «=» $$ Вывод символа «$» $T Вывод текущего времени $D Вывод текущей даты $P Вывод буквы текущего диска и имени текущего каталога $V Вывод текущей версии MS-DOS $N Вывод буквы текущего диска $G Вывод символа «>» $L Вывод символа «<» $B Вывод символа «|» $_ Переход в начало следующей строки $E Вывод символа Esc (ASCII 27) $H Стирание предыдущего символа Для сброса всех установок команды prompt необходимо в командной строке набрать команду prompt без параметров. Если на компьютере вместе с операционной системой MS-DOS установлена операционная оболочка Microsoft Windows 3.1x, то в сеансе MS-DOS в оконном режиме будет отображаться приглашение по-умолчанию. Для его смены необходимо установить переменную WINPMT. Формат этой команды: SET WINPMT=текст где текстом выступает последовательность параметров приглашения. Они будут теми же, что и в команде MS-DOS. Также необходимо отметить, что текст приглашения prompt и WINPMT записывается в системное окружение компьютера. Поэтому, если Вы использовали слишком длинное приглашение, то Вы можете быстро исчерпать область памяти для системного окружения длиной 512 байт. Чтобы этого не произошло, увеличьте область системного окружения командой SHELL в файле Config.sys Рекомендуемый автором размер системного окружения - *1024 байта *. Приглашение командной строки MS-DOS будет отображаться только в её "чистой" командной строке. При загрузке операционной оболочки типа Norton Commander, Volkov Commander и DOS Navigator системное приглашение всегда будет иметь вид: <диск>:\<путь>>, например: C:\NC> Примеры использования команды prompt. 1. Стандартное приглашение MS-DOS: prompt $n$g 2. Стандартное приглашение файловой оболочки: prompt $p$g 3. В верхнем правом углу будет постоянно светиться строка с текущим днём недели, датой и временем: prompt $e[s$e[1;33;44m$e[1;53H$d$e[1;69H$t$e[0m$h$h$h$h$h$h $e[25;1H$e[1:31;40m$e[u$p$e[0;32;40m$g 5P9i0s8y19Z dt=Text 03.07.04.02. Редактирование 1 командной строки Содержание 03.07.04.02.1. Запуск из командной строки 03.07.04.02.2. Редактирование командной строки 03.07.04.02.3. Особенности командной строки в UNIX. 03.07.04.02.4. Определение псевдонимов. 03.07.04.02.5. Резюме === *** === *** === Для того чтобы запустить команду на выполнение, необходимо ввести (набрать) её имя на клавиатуре, одновременно указав все необходимые параметры и опции, и нажать клавишу Enter. После её нажатия команда запускается на выполнение и при работе с нею происходит переназначение клавиш и устройств, используемых программой, и пользователь уже работает не с операционной системой, а с прикладной программой. Порядок работы в ней определяется разработчиком и описывается в соответствующей документации, поставляемой вместе с программой. 5P9i0s8y19Z dt=Text 03.07.04.02.1. Запуск из командной строки 2 Для того чтобы запустить команду на выполнение, необходимо ввести (набрать) её имя на клавиатуре, одновременно указав все необходимые параметры и опции, и нажать клавишу Enter. После её нажатия команда запускается на выполнение и при работе с нею происходит переназначение клавиш и устройств, используемых программой, и пользователь уже работает не с операционной системой, а с прикладной программой. Порядок работы в ней определяется разработчиком и описывается в соответствующей документации, поставляемой вместе с программой. 5P9i0s8y19Z dt=Text 03.07.04.02.2. Редактирование командной строки 2 в различных операционных системах Драйвер командной строки DOS - программа doskey Для удобства работы с командной строкой операционной системы, например, для корректировки введённой команды, запуска предыдущей, для других целей, применяют клавиши редактирования командной строки. При вводе команд можно пользоваться следующими клавишами: Действия DOS UNIX Стирание предыдущего символа Backspase Backspase, 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 - запуск в режим вставки. При вводе нового текста в командной строке старый текст будет раздвигаться. Выход\вход в этот режим осуществляется клавишей Ins. /OVERSTRIKE (по умолчанию) - новый текст записывается поверх старого. Вход\выход из этого режима - клавиша Ins. 5P9i0s8y19Z dt=Text 03.07.04.02.3. Особенности командной строки 2 в UNIX В системе UNIX одновременно на выполнение можно послать несколько программ. Для этого их надо перечислить (вместе с опциями и параметрами) в командной строке, отделяя одну от другой точкой с запятой ";". В DOS это можно сделать только при создании псевдонима, о котором речь пойдёт ниже. 5P9i0s8y19Z dt=Text 03.07.04.02.4. Определение псевдонимов 2 Для облегчения работы с командной строкой (например, чтобы все время не набирать команду с множеством опций) бывает проще создать новую команду, представляющую собой комбинацию из уже имеющихся команд. Эти новые комбинации называются псевдонимами в UNIX и макросами в MS-DOS. Для их создания используют конструкции: в DOS - doskey <имя новой команды>=<макрокоманда>, где <макрокоманда> - последовательность программ с опциями, параметрами и специальными символами (смотри в документации по DOS описание программы doskey). В UNIX - alias <имя новой команды>=<имя старой команды с опциями и параметрами> При определении псевдонима можно использовать перенаправление ввода и вывода информации, осуществить конвейер и использовать почти все возможности командной строки. В DOS в макросах можно использовать формальные параметры и другие возможности, ранее присутствовавшие только в командных файлах (с расширением .bat). Само собой разумеется, что имя псевдонима не должно совпадать с именем ни одного выполняемого файла (программы, командного файла). Для отмены псевдонима нужно набрать: в DOS - doskey <имя макроса>= в UNIX - unalias <имя псевдонима>. 5P9i0s8y19Z dt=Text 03.07.04.02.5. Резюме 2 В данной главе Вы познакомились с тем, как запускать программы с командной строки и как эффективно работать с командной строкой. Однако обучение работы с командной строкой ещё только начинается. Но именно этот раздел является самым важным для освоения эффективной работы в командной строке! 5P9i0s8y19Z dt=Text 03.07.04.03. Классификация файлов 1 1 Содержание 03.07.04.03.1. Содержимое файлов 03.07.04.03.2. Другие виды классификации файлов 03.07.04.03.3. Файлы и каталоги 5P9i0s8y19Z dt=Text 03.07.04.03.1. Содержимое файлов 2 Файлы могут содержать в себе любую информацию. Это могут быть как программы, выполняемые под управлением какой-либо операционной системы, либо файлы с данными для этих программ. Независимо от операционных систем персональных компьютеров все файлы можно разделить на текстовые и бинарные (по-другому - двоичные) файлы. Текстовыми файлами называют файлы, в которых используются в качестве информационных символы с шестнадцатеричными кодами 20h-7Eh (32 -126 десятичными) и 80h-7Eh (128 - 254 десятичными). В качестве служебных кодов и только в качестве них допускается использовать символы с кодами: 09h (9) (HT) - горизонтальная табуляция; 0Ah (10) (LF,EOL) - новая строка (перевод строки); 0Bh (11) (VT) - вертикальная табуляция; 0Ch (12) (FF) - новая строка (перевод страницы); 0Dh (13) (CR) - возврат каретки; 1Ah (26) (SUB,EOF) - конец файла. * Примечание: При визуализации текстового файла символ горизонтальной табуляции заменяется несколькими (обычно восемью) проблемами, символ вертикальной табуляции - несколькими пустыми строками. Символ возврата каретки переводит курсор (или позицию вывода нового символа) на первый элемент начала строки. Символ перевода строки выводит следующий символ на своём месте, только строкой ниже. Поэтому символ EOL (End-of-Line) в действительности - это последовательность символов CR/LF. Все символы, расположенные после символа конца файла, при выводе игнорируются. Среди всех текстовых файлов можно выделить подмножество чистых ASCII файлов, информационные символы которых имеют только коды с номерами 20h - 7Eh. Двоичные же файлы представляют собой последовательность из любых символов. Их длина определяется из заголовка файла. Это разделение является важным для различных операционных систем, поскольку назначение и обработка бинарных и текстовых файлов в операционных системах различаются. 5P9i0s8y19Z dt=Text 03.07.04.03.2. Другие виды классификации файлов 2 Также файлы можно разделить на исполняемые (программы) и неисполняемые (файлы данных и документов). Исполняемые файлы могут запускаться операционной системой на выполнение, а неисполняемые файлы могут только изменять своё содержимое в процессе выполнения программ. Далее можно разделить файлы на основные, присутствие которых обязательно для работы операционной системы и программных продуктов, служебные, хранящие конфигурацию и настройки основных файлов, рабочие, содержимое которых изменяется в результате работы основных программных файлов и собственно ради которых и создаются все остальные файлы, а также временные файлы, создающиеся в момент работы основных и хранящие промежуточные результаты . 5P9i0s8y19Z dt=Text 03.07.04.03.3. Файлы и каталоги 2 Следует отметить, что существует специальный вид файла, называемый каталогом (catalog), или директорией (directory). В нём содержатся ссылки на другие файлы. Поскольку ссылки на эти файлы содержатся лишь в одном из каталогов, для пользователей эти файлы как бы расположены в каталоге. На самом деле, конечно, все файлы находятся в секторах диска. Но это истинно лишь на физическом уровне, а на уровне представления данных файлы находятся в каталогах. Преимущества каталогов, особенности их работы с ними будут описаны ниже. Следует только отметить, что каталоги появились не сразу и не во всех операционных системах. Они возникли там, где требовался большой объём хранимой информации (например, в файловых системах жестких дисков) и, следовательно, возникли сложности с организацией и размещением большого числа файлов. Эти преимущества каталогов следует использовать при работе с операционными системами, содержащих каталоги. 5P9i0s8y19Z