Предисловие Предисловие ПРЕДИСЛОВИЕ Настоящий Справочник является документом, описывающим команды, возможности и особенности версии 5 операционной системы UNIX. В нем нет ни общего обзора операционной системы, ни деталей ее использования. Организация справочника пользователя Настоящий Справочник содержит раздел 1, делящийся на подразде- лы: 1. Команды и прикладные программы 1. Команды общего назначения 1C. Коммуникационные команды 1G. Графические команды В разделе 1 (Команды и прикладные программы) описываются прог- раммы, предназначенные для непосредственного вызова пользовате- лем, или для вызова из процедур, написанных на командном языке, в противоположность подпрограммам, которые вызывают из пользо- вательских программ. Как правило, команды находятся в каталоге /bin (там хранится их двоичный образ). Чтобы сэкономить место в каталоге /bin, некоторые команды помещены в /usr/bin. Поиск ко- манд в этих каталогах автоматически обеспечивается интерпрета- тором командного языка shell. В подразделе 1C описываются ком- муникационные команды, такие как cu и uucp. На некоторых других аппаратных конфигурациях эти команды могут и не работать. Иног- да команды, специфичные для конкретной вычислительной установ- ки, помещают в каталог /usr/lbin. В нашем случае для той же це- ли используются каталоги /usr/binb и /util. Перед разделом 1 помещены оглавление и предметный указатель, в каждой строке которого вслед за именем команды в скобках указан номер раздела (подраздела). Это важно, так как в разных разде- лах есть много общих имен, поскольку многие команды нужны лишь для того, чтобы выполнить соответствующий системный вызов. Раз- делы 1M, 7, 8 входят в Справочник администратора, а разделы 2, 3, 4, 5 - в Справочник программиста. При использовании предмет- ного указателя в средней колонке отыскивают нужное ключевое слово или фразу, после чего из правой колонки извлекают ссылку на статью в соответствующем Справочнике. Левая колонка предмет ного указателя содержит дополнительную полезную информацию. Ог лавление, кроме названия статей, содержит их краткую аннотацию. Находясь в системе, с помощью команды help можно получить опе- ративную консультацию по использованию команд и толкованию тех- нических терминов ОС UNIX. Организация разделов Каждый раздел состоит из набора независимых статей, размером примерно в страницу. Названия статей вынесены наверх. Внутри разделов статьи упорядочены по алфавиту, за исключением вводной статьи (intro), помещенной в начале. Страницы в статье нумеру- ются, начиная с 1. Ссылки на другие статьи кроме названия со- держат заключенный в скобки номер раздела (подраздела). Формат статей Все статьи имеют стандартный формат, хотя часть пунктов в статье может и не присутствовать: 1. НАЗВАНИЕ статьи и краткая аннотация. 2. СИНТАКСИС описываемой команды. 3. ОПИСАНИЕ того, как применять команду. 4. ПРИМЕР(Ы) использования описываемой команды. 5. ПРИМЕЧАНИЯ. Содержат информацию о специфических ситуациях. 6. ОКРУЖЕНИЕ, в котором выполняется команда. 7. ФАЙЛЫ, связанные с описываемой командой. 8. СМ. ТАКЖЕ. Перечень статей, связанных с данной. 9. КОД ЗАВЕРШЕНИЯ. Доступен как значение переменной окружения ?. 10. ДИАГНОСТИКА. Перечень диагностических сообщений, нуждающих- ся в пояснениях. 11. ПРЕДОСТЕРЕЖЕНИЯ о возможных затруднениях в использовании описываемой команды. 12. СЮРПРИЗЫ. Перечень известных ошибок и других недостатков, а также способы их обхода. 13. ОГРАНИЧЕНИЯ реализации, влияющие на использование. Соглашения В статьях приняты следующие соглашения. Цепочки символов, выделенные жирным шрифтом, представляют собой литералы, которые следует вводить в точности так, как указано в тексте. Курсивом выделяются имена команд, а также шаблоны аргументов, вместо которых при реальном вызове следует указывать реальные значения. Однако в пунктах НАЗВАНИЕ, СИНТАКСИС и СМ. ТАКЖЕ име- на команд не выделены курсивом. Квадратные скобки [ ] означают, что соответствующий аргумент является необязательным. Если аргумент задан в виде имя или файл, то в этих случаях подразумевается имя файла. Многоточие ... означает, что предыдущий аргумент может быть повторен несколько раз. Как правило, аргументы команд, начинающиеся со знаков -, + или =, рассматриваются как опции, даже если они стоят там, где должно стоять имя файла. Поэтому не рекомендуется употреблять указанные символы в качестве начальных в именах файлов. КАК НАЧАТЬ? Ниже приводятся основные сведения, необходимые пользователю для начала работы с операционной системой UNIX: как войти в систему и выйти из нее, как пользоваться терминалом, как запустить программу. Вход в систему Для работы с версией 5 ОС UNIX необходим полнодуплексный терми- нал с набором символов ASCII. Скорость обмена данными для тер минала может быть 110, 150, 300, 1200, 2400, 4800 или 9600 бод. Если терминал установлен не на ту скорость, которая ожидается системой, то вместо приглашения login: Вы увидите строку бесс- мысленных символов. После того, как на экране появится строка |login: введите свое входное имя и, если нужно, пароль (при этом пароль на экран не выводится!), завершая набор нажатием клавиши "возв- рат каретки". Если Вы ошиблись при вводе имени, нажмите @ (от- мена всего ранее набранного) и повторите ввод. Входное имя нужно набирать малыми буквами. После ввода больших букв система будет считать, что на Вашем терминале нет малых букв, и, чтобы помочь Вам, будет трактовать большие буквы как малые. После нормального входа на экране, в качестве приглаше- ния, появится знак доллара ($). Для получения более подробной информации см. login(1) (деталь- ное обсуждение последовательности действий при входе в систе- му), stty(1) (установка характеристик терминала) и profile(4) (автоматизация установки характеристик при входе в систему). Выход из системы Чтобы завершить сеанс работы, нужно ввести символ конца файла (для shell'а это обычно CTRL+D), после чего на экране вновь по- явится приглашение Как пользоваться терминалом При нажатии Вами клавиш система получает и запоминает их, но не передает программе до нажатия клавиши "возврат каретки". Терминал ОС UNIX производит ввод/вывод в полнодуплексном режи- ме, то есть Вы можете вводить данные когда угодно, даже если программа в это время выдает приглашение. Конечно, если вводить данные в момент вывода, на экране все перемешается; однако то, что Вы введете, будет сохранено и передано программе. Разумеет- ся, есть ограничение на количество вводимых таким образом сим- волов, но оно весьма велико. Если ограничение превышено, теря ются все введенные символы. При вводе с терминала символ @ "убивает" все ранее набранные символы, а # удаляет последний набранный символ. Последователь- ность # удаляет несколько набранных символов, вплоть до (но не далее) начала строки. Чтобы ввести символы @ и # как таковые, перед ними нужно набрать \ (то есть, чтобы удалить \, требуется два символа #). Указанные убивающий и удаляющий символы уста навливаются по умолчанию. Посредством команды stty(1) их, как и другие управляющие символы, можно сменить, что обычно и делают. Клавишами CTRL+S и CTRL+Q можно приостановить/возобновить вывод на экран. Эти символы не передаются программам. Символ DEL не передается программам; он порождает сигнал преры- вания. Обычно этот сигнал вызывает завершение программы. Его используют, например, чтобы прервать слишком длинную выдачу. Однако можно сделать так, чтобы программа или игнорировала та кие сигналы, или получала о них информацию без завершения рабо- ты. Редактор ed(1), например, "ловит" прерывания и, вместо пол- ного завершения, прекращает лишь текущую операцию, так что с помощью прерывания можно прервать выдачу, порождаемую редакто ром, не рискуя потерять редактируемый файл. Сигнал выхода генерируется в результате нажатия CTRL+\. После его получения не только завершается процесс, но и создается файл с "образом памяти" процесса. Этот сигнал полезен для от- ладки. Система UNIX может адаптироваться не только к разной скорости передачи данных, но и к наличию у терминала функции "переход к началу новой строки". Если ее нет, она моделируется парой "возврат каретки", "перевод строки". В этом случае вводимые "возвраты каретки" преобразуются в "переводы строк" (стандарт- ный разделитель), а на терминал выдается пара "возврат карет- ки", "перевод строки". Если по каким-либо причинам Вы попали в неверный режим, исправьте положение командой stty(1). В системных программах часто используется символ табуляции. Ес ли Ваш терминал не отрабатывает табуляцию, посредством команды stty(1) можно сделать так, чтобы она преобразовывалась в после- довательность пробелов. По умолчанию считается, что позиции буляции установлены через восемь. Команда tabs(1) позволяет из менить это соглашение, если терминал на это способен. Выполнение программ После успешного входа в систему программа, называемая shell, готова выполнить любую Вашу команду. Shell читает вводимые Вами строки, выделяет из них имя команды и ее аргументы и выполняет команду. Команда есть просто выполняемая программа. Обычно в поисках указанной программы shell сначала просматривает текущий каталог (см. далее). В случае неудачи просматриваются системные каталоги. Системные команды отличаются от пользовательских только тем, что находятся в каталогах, в которых их может найти shell. Можно хранить команды в собственных каталогах, доступных для shell'а. Имя команды - первое слово в строке, посылаемой shell'у; имя команды и ее аргументы разделяются пробелами и/или символами табуляции. По завершении выполнения команды управление обычно передается shell'у, который для подтверждения готовности выполнения следу- ющей команды выводит знак $. Подробнее о shell'е см. sh(1). Текущий каталог Файловая система в ОС UNIX является иерархией каталогов. При регистрации Вас в системе администратор создает для Вас ката- лог, название которого, как правило, совпадает с Вашим входным именем. Данный каталог называется входным или основным. При входе в систему Вы попадаете именно в этот каталог, который становится Вашим текущим (или рабочим) каталогом и по умолчанию любой файл ищется именно в нем. Так как Вы являетесь владельцем каталога, то имеете право читать, писать в него, изменять и удалять его содержимое. Права на чужие для Вас каталоги и файлы определяются их владельцами или администратором системы. Для изменения текущего каталога служит команда cd(1). Маршрутные имена Для указания файла, находящегося вне текущего каталога, необхо- димо использовать маршрутное имя. Полное маршрутное имя начина- ется символом /, который обозначает корневой каталог всей фай- ловой системы. Затем указываются все промежуточние каталоги вплоть до имени файла. После каждого каталога ставится символ /. Например, /usr/bin/factor указывает на файл factor в катало- ге bin, который сам является подкаталогом usr; usr находится непосредственно в корневом каталоге. Формальное определение маршрутных имен дается в intro(2). Если в Вашем текущем каталоге есть подкаталоги, маршрутные име- на содержащихся в них файлов будут начинаться с имени под лога (без символа /). Так, если текущим каталогом является /usr, то на файл из предыдущего примера можно сослаться как на bin/factor. Маршрутные имена могут встречаться практически вез- де, где ожидается имя файла. Наиболее употребительные команды, которые изменяют содержимое файлов: cp(1), mv(1) и rm(1) - копирование, переименование и удаление файлов соответственно. Для анализа содержимого катало- гов и прав доступа к файлам служит команда ls(1). Каталоги соз- даются и удаляются командами mkdir(1) и rmdir(1). Полезно также ознакомиться с разделом 2 Справочника программиста, где обсуж- даются системные вызовы, даже если Вы не собираетесь их исполь- зовать. Написание программ Для ввода исходных текстов программ используйте экранный редак- тор РК или редакторы ed(1), vi(1) и др. В версии 5 ОС UNIX дос тупны следующие языки программирования: C [см. cc(1)], Фортран- 77 [см. f77(1) и svs(1)] и язык ассемблера [см. as(1)]. Посл того, как текст программы с помощью редактора создан и сохранен в файле с соответствующим расширением, можно задать имя этого файла как аргумент соответствующему компилятору. По умолчанию результаты компиляции сохраняются в текущем каталоге в файле с именем a.out. Задать иное имя файла-результата можно либо ука- зав соответствующие опции при запуске компилятора, либо вос- пользовавшись командой mv(1) для переименования файла a.out. Если программа написана на языке ассемблера, то скорее всего ее нужно будет объединить с библиотечными подпрограммами [см. ld(1)]. Фортран-77 и C вызывают редактор связей автоматически. Если компиляция и сборка прошли без ошибок, то для выполнения файла-результата достаточно указать его имя в ответ на пригла шение shell'а $. Для отладки программ на языках C и Фортране-77 рекомендуем при менять отладчик КРОТ, а для программ на ассемблере - отладчик sdb(1). Ваша программа, как и любая системная программа, может получать аргументы из командной строки [см. exec(2)]. Обработка текстов Для редактирования текстов используются редактор РК, а также стандартные редакторы ОС UNIX, такие как ex(1), vi(1), ed(1) и т.д. Для вывода содержимого файла на терминал чаще всего приме- няют команды cat(1) и pr(1). Команда cat(1) просто выводит текст в кодах ASCII, pr(1) делит текст на страницы, добавляет в начало каждой заголовок и обладает возможностями вывода содер жимого файла в несколько колонок. Связь с другими пользователями Некоторые команды обеспечивают связь между пользователями. Даже если Вы не собираетесь употреблять их, Вы должны иметь о них представление, ибо кто-либо другой может попытаться связаться с Вами. Для связи с пользователем, вошедшим в систему, служит ко- манда write(1); команда mail(1) позволяет оставить сообщение, о котором адресат будет извещен при следующем входе его в систе му. В описании этих команд рассказывается, как реагировать на сообщения. При входе в систему до получения приглашения $ Вам будет выдано сообщение о наличии для Вас сообщений, если таковые имеются.