Руководство по Xenix 1. Введение 1.1. Обзор Это руководство знакомит вас с ключевыми понятиями сис- темы XENIX. Оно составлено в виде учебника. Руководство начинается с "демонстрационного сеанса", в котором поясняется пример сеанса реальной работы на компьютере, объясняется, как работать с командами и исправлять ошибки при их наборе с клавиатуры. Вводятся основные понятия, такие, как файлы, команды и соот- ветствие образцам. Затем эти и другие понятия объясняются применительно к "реальным" примерам, таким, как работа с файлами, зада- ние конфигурации терминала, управление процессами и информация о статусе или состоянии. _______________________________________________________ Замечание Это руководство необходимо прочитать перед тем, как вы раскроете остальную документацию по системе XENIX, но для получения более подробной информации по всем темам, затронутым здесь, обращайтесь к другим руководствам пользователя и справочникам из комплекта документации. __________________________________________________ 1.2. Система XENIX Система XENIX состоит из многопользовательской операци- онной системы общего назначения и более сотни приклад- ных и обслуживающих программ. В дополнение к операцион- ной системе XENIX, описанной в данном руководстве, воз- можно использование двух других системных пакетов: Сис- темы разработки программ XENIX и Системы обработки текстов XENIX. 1.3. Рабочее окружение системы XENIX Система XENIX построена вокруг операционной системы XENIX. Операционная система предназначена для эффектив- ной организации и управления ресурсами компьютера таким образом, чтобы ими могли пользоваться реальные пользо- ватели. Эти ресурсы включают в себя память, диски, принтеры, терминалы и любые другие периферийные уст- ройства, связанные с системой. Сердцевиной системы XENIX является "многопользовательская" и "многозадач- ная" операционная система. Многопользовательская сис- тема позволяет нескольким пользователям одновременно - 1 - использовать компьютер, таким образом обеспечивая мень- шую стоимость вычислительной мощности в расчете на одного пользователя. Многозадачная система позволяет работать одновременно нескольким программам и увеличи- вает производительность компьютера, так как несколько программ могут работать одновременно, а не последова- тельно. Так как UNIX (а значит, и XENIX) является принятым стандартом операционных систем, ориентированных на ква- лифицированного пользователя, то с этим окружением можно использовать большую часть программного обеспече- ния. В дополнение, XENIX обеспечивает доступ к файлам операционной системы MS-DOS, наиболее широко используе- мой операционной системой в мире для 16 разрядных компьютеров. Для систем, которые поддерживают DOS, XENIX предоставляет команды, которые дадут вам доступ к файлам и дискам в формате DOS. Также система XENIX включает несколько широко распространенных удачных усо- вершенствований, разработанных в Калифорнийском универ- ситете в Беркли, и экранный интерфейс, близкий к другим интерфейсам программных продуктов фирмы Microsoft. Другие особенности, характеризующие систему XENIX: - Мощный командный язык для команд программирова- ния XENIX. В отличие от других интерактивных командных языков, "shell" системы XENIX является полным языком программирования. - Соглашение по присвоению простых и составных имен. Имена могут использоваться абсолютно, либо относительно любого каталога файловой системы. - Независимость операций ввода-вывода от уст- ройств: каждое физическое устройство, от инте- рактивного терминала до основной памяти, воспри- нимается как файл, что позволяет привести к еди- ной форме ввод-вывод в файл и на устройство. - Набор относительных текстовых редакторов, вклю- чающий полный экранный редактор. - Гибкие средства обработки текстов. В системе XENIX существуют команды для поиска и извлечения образцов текста из файлов, сравнения и нахожде- ния различий между файлами, сравнения каталогов и поиска по каталогам. Так же предоставляются средства форматирования, установки типа и про- верки правильности написания текста, а также средства для форматирования и установки типа сложных таблиц и выравнивания. - 2 - - Сложная программа-"калькулятор". - Монтируемая и отмонтируемая файловая система, которая позволяет добавлять гибкие диски к фай- ловой системе. - Полный набор различных гибких способов защиты каталогов и файлов, который предоставляет все комбинации полномочий на чтение, запись или выполнение для владельца каждого файла или ката- лога, а также для группы пользователей. - Средства для создания, получения доступа, пере- мещения и обработки файлов и каталогов простым и общим для всех способом. 1.4. Об этом руководстве Данное руководство построено следующим образом: Глава 1, "Введение", содержит введение и обзор системы XENIX. Глава 2, "Демонстрационный сеанс", дает опыт непос- редственного общения с системой XENIX. Глава 3, "Основные понятия", объясняет основные поня- тия, которые вам нужно знать перед тем, как вы начнете использовать систему. В нее включены разделы по файло- вой системе, соглашению по присвоению имен, командам и вводу-выводу. Глава 4, "Задачи", объясняет, как выполнять повседнев- ные задачи с помощью соответствующих команд системы XENIX. - 3 - 2. Демонстрационный 2.1. Введение В этой главе описан демонстрационный сеанс работы, раз- работанный для того, чтобы помочь вам освоить систему XENIX, и начать эффективно ее использовать. Показано, как входить в систему, вводить информацию с клавиатуры, что делать, если при вводе была сделана ошибка, как вводить команды и как выходить из системы. 2.2. Перед тем, как вы войдете в систему Перед тем, как вы сможете войти в систему, ваше имя должно быть занесено в список пользователей системы XENIX. В этот момент вам дадут регистрационное имя и пароль. Вы можете занести свое имя сами или поручить эту работу кому-либо другому; это зависит от окружения, в котором используется ваша система. В любом случае, см. Руководство оператора XENIX и mkuser(C) для получе- ния более подробной информации о добавлении пользовате- лей в систему. Когда для вас заводится учетная структура в системе XENIX, вы также получаете имя пользователя, пароль и регистрационный каталог. Если все это у вас уже есть, то все, что вам нужно - это терминал, с которого вы сможете войти в систему. XENIX поддерживает большинстов типов терминалов, и, подключая терминал для работы с системой, вы не должны столкнуться с проблемами. Снова см. Руководство оператора XENIX для получения дополни- тельной информации по установке конфигурации вашего терминала. 2.3. Вход в систему Обычно система простаивает с приглашением "login:" на экране терминала. Если система не выводит никаких сим- волов, когда вы вводите текст, то, возможно, ваш терми- нал получает информацию на неправильной скорости, и вам необходимо проверить переключатели терминала. Если переключатели установлены правильно, несколько раз наж- мите клавиши BREAK или INTERRUPT. Когда вы получили сообщение "login:", введите ваше регистрационное имя, а затем нажмите RETURN; система ничего не будет делать, пока вы этого не сделаете. Если потребуется пароль, у вас его запросят. Пароль, который вы вводите, не отображается на экране. Это позволяет сохранить его в тайне. Не забудьте нажать RETURN после того, как вы введете пароль. Затем вы увидите строку - 4 - TERM=(unknown) Введите тип вашего терминала (например, ansi) и нажмите RETURN. После успешного входа в систему появляется "символ- приглашение", одиночный символ, который означает, что система готова принимать команды. Обычно используется знак денежной единицы ('$') или процент ('%'). Кроме того, вы можете получить при входе сообщение, такое, как: You have mail (Вам пришла почта) сообщающее вам, что другой пользователь системы послал вам почтовое сообщение. 2.4. Ввод команд После того, как появился символ-приглашение, система готова воспринимать команды, вводимые с терминала. Поп- робуйте ввести: date затем нажмите RETURN. Система выведет нечто такого рода: Mon Jun 16 14:17:10 EST 1985 Не забудьте нажать клавишу RETURN после команды, иначе ничего не произойдет. Клавиша RETURN не будет больше упоминаться, но не забывайте, что ее нужно нажимать в конце каждой командной строки. На некоторых терминалах клавиша RETURN может быть обозначена как ENTER или CR, но во всех этих случаях клавиша осуществляет ту же самую функцию. Другая команда, которую вы можете попробовать ввести, это who, которая выводит имена всех, кто вошел в сис- тему. Типичный вывод команды who может выглядеть так: you console Jan 16 14:00 joe tty01 Jan 16 09:11 ann tty02 Jan 16 09:33 Время, указанное в четвертом столбце, обозначает время входа пользователя в систему; ttynn - это системное имя для каждого пользовательского терминала, где nn это уникальный двухцифровой номер. console - это - 5 - специальное имя основного терминала, установленное по умолчанию для многих операций. Если вы сделали ошибку при вводе имени команды, вы уви- дите сообщение на вашем экране. Например, если вы вве- дете: whom система выведет следующее сообщение: whom: not found (не найдена) Обратите внимание, что регистр, в котором вы набираете команду, имеет значение в системе XENIX. Команды who и WHO не одно и тоже, этим XENIX отличается от некоторых опе- рационных систем, в которых регистр не имеет значения. Теперь попробуйте вывести сообщение на ваш экран, используя команду echo. Введите: echo hello world Команда выведет остаток командной строки на ваш терми- нал: hello world Теперь попробуйте набрать следующее: echo hello world>&gt;greeting.file В этом случае команда echo вместо вашего терминала перешлет свой вывод в новый файл, названный greeting.file. Заметьте, что использование знака больше ('>&gt;') означает "перенаправить" вывод команды. Теперь введите: ls для того, чтобы вывести только имя файла. Чтобы посмот- реть его содержимое, необходимо дать команду: cat greeting.file - 6 - где "cat" означает объединенить (concatenate). Одно из назначений команды cat -это объединить содержимое нес- кольких файлов и поместить результат в новый файл. Однако, так как ваш терминал воспринимается в системе XENIX как любой другой файл, cat чаще всего использу- ется для вывода содержимого файла на экран. Таким обра- зом, вышеуказанная команда пересылает следующий вывод на экран вашего терминала: hello world Чтобы удалить файл greeting.file, введите: rm greeting.file Заметьте, что имена команд системы XENIX часто сокраща- ются до мнемонических названий. Например, cp является сокращением от "copy", ls - сокращение от "list", cat - сокращение от "concatenate", mkdir - сокращение от "make direсtory", а chmod - сокращение от "change mode". 2.5. Ошибки при наборе Если вы сделали ошибку при вводе команды, существует два способа отредактировать строку, при условии, что вы еще не нажали клавишу RETURN. Нажатие клавиши BKSP вызывает удаление последнего введенного символа. Пере- ходя на шаг назад клавишей BKSP можно удалить символы до начала строки, но не перед началом. Таким образом, если вы напечатали что-то неправильно, вы можете испра- вить это. Например, ввод: ddBKSPateRETURN означает то же самое, что и dateRETURN Символ стирания строки Ctrl-u стирает все символы уже введенные на текущей строке. Например, если строку исправить нельзя, нажмите Ctrl-u и начните вводить ее заново. Если вы должны ввести BKSP или Ctrl-u как часть текста, поставьте перед ними обратную косую черту ('\'), таким образом символ теряет свое специальное "удаляющее" зна- чение. Чтобы ввести BKSP или Ctrl-u в текст, введите "\BKSP" или "\Ctrl-u". Система всегда выводит новую строку на ваш терминал после Ctrl-u, даже если этой комбинации предшествует обратная косая черта. Тем не менее Ctrl-u будет записано. - 7 - Чтобы удалить обратную косую черту, дважды нажмите кла- вишу BKSP следующим образом: "\BKSPBKSP". Обратная косая черта широко используется в системе XENIX для того, чтобы обозначить, что следующий за ней символ несет специальное значение. Заметьте, что функции, осу- ществляемые символами BKSP и Ctrl-u доступны во всех системах XENIX, однако клавиши, используемые для обоз- начения этих символов могут изменяться и могут быть установлены командой stty(C). 2.6. Чтение с опережением и ввод с опережением Система XENIX может считывать команды с опережением, это означает, что вы можете набирать команды с такой скоростью, с какой вы хотите, и где вы хотите, а XENIX запомнит все, что вы ввели. Если вы вводили текст в то время, как другая команда выводила текст на экран, вво- димые вами символы появлялись на экране вперемешку с выводимыми символами, но тем не менее они были запом- нены и восприняты в правильном порядке. Таким образом, вы можете ввести несколько команд (т.е. "ввод с опере- жением") одну за другой, не ожидая окончания выполнения первой. Заметьте, что это нельзя использовать при входе в систему; опережающий ввод не работает до тех пор, пока после ввода пароля не появится приглашение в виде знака денежной единицы ('$'). 2.7. Странное поведение терминала Время от времени ваш терминал может себя странно вести. Вы можете привести его в нормальное состояние либо вык- лючив, а затем быстро включив, либо выйдя из системы, и войдя обратно; эти действия приводят к установке заново характеристик вашего терминала. Часто помогает нажатие Ctrl-q. Это восстанавливает работоспособность термина- лов, которые находятся (случайно или по другим причи- нам) в режиме отключенного отображения символов. Ctrl-s приостанавливает вывод на экран, а Ctrl-q продолжает вывод. Если включение и выключение терминала, выход из системы и вход обратно, нажатие Ctrl-q не помогает, прочтите описание команды stty(C) в документации по системе XENIX для получения дополнительной информации по установке характеристик терминала. Также посмотрите следующий раздел, "Остановка программы". 2.8. Остановка программы Вы можете преждевременно прекратить выполнение боль- шинства программ и команд, нажав клавишу INTERRUPT (возможно на вашем терминале она называется DEL, DELETE, Ctrl-c или RUBOUT). На многих терминалах существует клавиша BREAK, которую также можно использо- вать. В некоторых программах, таких, как большинство - 8 - текстовых редакторов, ввод INTERRUPT останавливает только действия, выполняемые в данный момент програм- мой, без преждевременного прекращения самой программы. Когда в этой документации написано "послать прерыва- ние", то подразумевается нажатие клавишу INTERRUPT. 2.9. Выход из системы Чтобы закончить сеанс работы с системой XENIX, вы должны выйти из системы. Это производится нажатием Ctrl-d в первой позиции строки. Недостаточно только выключить терминал, так как это не выводит вас из сис- темы. Некоторые программы также можно остановить нажа- тием Ctrl-d, так что будьте внимательны. 3. Введение В этой главе будут объяснены основные понятия, которые вы должны знать для работы с системой XENIX. Прочитав эту главу, вы будете знать, как организованы системные файлы, каталоги и устройства, и как они называются, как вводятся команды и как можно манипулировать вводом и выводом команд. Начинается эта глава с обсуждения фай- лов. 3.1. Файлы Файл является основной единицей файловой системы XENIX. В системе XENIX в действительности существует три типа файлов: обычные файлы (то, что мы обычно имеем в виду, когда говорим "файл"), каталоги и специальные файлы. Каждый из этих типов описан ниже. 3.1.1. Обычные файлы Обычные файлы обычно содержат текстовую информацию, например документы, данные или тексты программ. Выпол- няемые двоичные файлы также входят в эту группу. Обыч- ный файл это просто именованная последовательность 8- разрядных байтов. Будут ли эти байты восприниматься как текстовые символы, двоичные инструкции или оператор программы, зависит только от тех программ, которые их используют. Каждый обычный файл имеет следующие атри- буты: - Имя файла (не обязательно уникальное). - Уникальный в данной системе номер, называемый номером i-узла. - Размер в байтах. - 9 - - Время создания. - Время изменения. - Время последнего доступа. - Набор кодов доступа. Для обеспечения безопасности и сохранности информации файлы могут быть защищены установкой соответствующих кодов доступа. Это осуществляется при помощи присвое- ния файлам полномочий на чтение-запись-выполнение. Пользователь может управлять предоставлением этих пол- номочияй владельцу файла, группе пользователей и прочим пользователям. По умолчанию, владельцем файла является его создатель. Владелец может читать файл или писать в него. По умолчанию, прочие пользователи могут читать файл, принадлежащий другому, но не могут писать в него. Коды доступа файла могут быть изменены командой chmod. Эта команда описывается в главе 4 данного руководства. 3.1.2. Специальные файлы Специальные файлы соответствуют физическим устройствам, таким, как гибкие или жесткие диски, принтеры, терми- налы и системная память. Они называются "специальные файлы устройств". В этом руководстве они не описаны. 3.1.3. Файлы-каталоги Файлы-каталоги - это файлы, которые можно только читать, и которые содержат информацию о файлах или каталогах, которые умозрительно (но не физически) содержатся внутри него. Эта информация состоит из имени и номера i-узла для каждого файла или каталога, содер- жащегося внутри данного каталога. Номер i-узла - это уникальный номер, связанный с любым заданным файлом. У всех файлов в системе имеются номера i-узлов. Пара имя/номер i-узла называется ссылкой (связью). Команда ls просматривает файлы каталогов и выводит информацию о файлах, содержащихся внутри названного каталога. По номеру i-узла команда ls может найти также другую информацию о файле. Вложенность каталогов внутрь других каталогов - это способ, при помощи которого XENIX реализует характери- зующую ее древовидную структуру каталогов. Каталоги обсуждаются в следующем разделе. Как и обычные файлы, каталоги могут быть защищены при помощи установки соответствующих кодов доступа для обеспечения сохранности информации и безопасности. Это осуществляется присвоением каталогам полномочий на - 10 - чтение-запись-выполнение. Доступ к каталогу может регулироваться для владельца каталога, группы пользова- телей и для прочих пользователей. Разрешение на запись означает, что к каталогу могут быть добавлены или уда- лены файлы. По умолчанию, владельцем каталога является его создатель, владелец может читать, создавать или удалять файлы в каталоге. Также, по умолчанию, пользо- ватель может читать файлы из каталога другого, но не может добавлять или удалять файлы. Как и коды доступа к файлу, коды доступа к каталогу можно изменить коман- дой chmod. Коды доступа, устанавливаемые по умолчанию, могут быть изменены командой umask. 3.1.4. Структура каталога Если в системе работает несколько пользователей и раз- рабатываются различные проекты, число файлов в файловой системе может быстро увеличиваться. К счастью, как упо- миналось раньше, XENIX организует файлы в иерархическую древовидную структуру каталогов. Древовидную структуру можно представить в виде физического мира, в котором пользователь может передвигаться из одного места в дру- гое. "Места" - это каталоги. Каждый пользователь сис- темы имеет свой персональный каталог. Внутри этого каталога пользователь может иметь каталоги или другие подкаталоги, принадлежащие только ему и управляемые только этим пользователем. Когда вы входите в систему, вы попадаете в свой ката- лог. Если вы не предприняли специальных действий при создании файла, новый файл будет создан в вашем рабочем каталоге. Этот файл не имеет отношения к любому другому файлу с тем же именем в чьем-либо другом каталоге. Схема типичного пользовательского каталога показана на Рис 3-1. usr /| / | / | adam eve mary / / text1 / text text temp Рис 3-1 Типичный каталог пользователя. На Рис 3-1 каталог usr содержит персональные каталоги всех пользователей. Заметьте, что файл с именем text в каталоге mary не имеет никакого отношения к такому же файлу в каталоге eve. Это не имеет значения, если все интересующие нас файлы находятся в каталоге eve, но если владельцы каталогов eve и mary работают вместе, или если они работают раздельно, но над связанными задачами, такое разделение файлов становится действи- тельно удобным. Например, владелец mary может - 11 - напечатать текст из каталога eve, набрав: pr /usr/eve/text Также и владелец eve может посмотреть, какие файлы содержатся в каталоге mary: ls /usr/mary 3.2. Файловые системы Файловая система - это набор файлов, организованных определенным образом. В системе XENIX этот набор сос- тоит из всех доступных ресурсов, включающих файлы дан- ных, каталоги, программы, принтеры и диски. Таким обра- зом, файловая система XENIX - система, предоставляющая доступ ко всем системным ресурсам. Чтобы придать ресурсам системы логическую структуру, файловая система XENIX организована иерархически, в виде перевернутой "древовидной структуры". На Рис 3-2 показана структура типичной древовидной файловой сис- темы. В этом типичном дереве файлов корень дерева рас- положен наверху, а ветви дерева растут вниз. Каталоги соответствуют i-узлам в дереве; обычные файлы соот- ветствуют "листьям". Если каталог содержит идущую вниз ветвь к другим файлам или каталогам, тогда эти файлы и каталоги "содержатся" в указанном каталоге. Можно назы- вать любой файл в системе, начиная от корня (корень находится на вершине), и идти вниз по всем веткам до необходимого файла. Точно также вы можете указать любой файл в системе относительно любого каталога. Определе- ние этих файлов зависит от знания соглашений о присвое- нии имен в системе XENIX, обсуждаемых в следующем раз- деле. / (корень) /| / | / | bin usr dev / / cmd / tty doug neil / | | / | | mail news text data Рис 3-2 Типичная файловая система На Рис 3-2 "дерево" файловой системы растет вниз. Имена bin, usr, doug и neil представляют каталоги и все узлы дерева. В системе XENIX корневой каталог имеет имя, состоящее из одного символа "/". Имена mail, news, text и data представляют обычные файлы данных, и все являются "листьями" дерева. Заметьте, что имя cmd - это имя команды, которую можно запустить. Имя tty соот- ветствует терминалу и также представлено в дереве. - 12 - 3.3. Соглашения по присвоению имен В системе XENIX каждый файл, каталог и устройство обла- дают как именем файла, так и абсолютным полным именем файла (иногда также называемым маршрутом к файлу). Полное имя файла представляет собой описание местополо- жения файла или каталога в системе. Полное имя является уникальным для всех имен в системе; просто же имя файла является уникальным только внутри данного каталога и может не быть единственным в системе. Это как в теле- фонном справочнике человек записан под именем John Albert Smith, а в телефонной книжке оффиса этот же человек может быть записан просто под именем John. 3.3.1. Имена файлов Просто имя файла представляет собой последовательность из от одного до четырнадцати символов, отличных от сим- вола косая черта ('/'). Каждый файл, каталог и уст- ройство имеет имя. Имена файлов используются для опре- деления содержимого каталогов. Таким образом, в одном каталоге не может быть двух файлов с одинаковыми име- нами. Однако имена в различных каталогах могут совпа- дать. Несмотря на то, что вы можете использовать любые сим- волы в имени файла, лучше его составлять из буквенно- цифровых символов и точек. Не советуем использовать другие символы в имени файла, особенно управляющие сим- волы. Если имя файла содержит точку в первой позиции, то этот файл является "скрытым" и не отображается командой ls. Однако команда ls с ключом -a выведет скрытые файлы. Тире ('-') используется для указания ключей команды, поэтому следует избегать использования этого символа в именах файлов. Кроме того, нельзя использовать в именах файлов символы знак вопроса ('?'), звездочка ('*'), скобки ('[' и ']'), а также кавычки, так как все эти символы имеют специальное зна- чение при вводе команд. 3.3.2. Полные имена файлов Полное имя файла представляет собой само имя файла, перед которым следует последовательность из имен ката- логов, разделенных символом косая черта ('/'). Если полное имя файла начинается с символа косая черта, оно указывает на файл, который может быть найден при прос- мотре от корневого каталога. В противном случае файлы ищутся относительно "текущего каталога" ( также называ- емого "рабочим каталогом"). Текущий каталог необходимо представлять себе как место вашего расположения в сис- теме, думайте о нем как о физическом местеположении. Когда вы меняете ваш текущий каталог, вы передвигаетесь - 13 - в некоторый другой каталог или место в файловой сис- теме. Полное имя файла, начинающееся с символа косая черта, называется "абсолютным полным именем файла", так как оно не изменяется относительно текущего каталога поль- зователя. Полное имя файла, которое начинается не с символа косая черта, назвается "относительным полным именем файла", так как оно указывает на файл относи- тельно текущего каталога. В любое время пользователь может сменить текущий каталог командой cd. Имя теку- щего каталога можно вывести командой pwd. 3.3.3. Примеры имен файлов Некоторые примеры имен файлов показаны ниже: / Абсолютное полное имя корневого каталога файловой системы. /bin Каталог, содержащий большинство наиболее часто используемых команд системы XENIX. /usr Каталог, содержащий личные каталоги пользователей. Каталог /usr/bin содержит наиболее часто использу- емые команды системы XENIX, которых нет в каталоге /bin. /dev Каталог, содержащий файлы, соответствующие физи- ческим устройствам (таким, как терминалы, принтеры и диски). /dev/console Имя основного терминала системы. /dev/tty Имя терминала пользователя. /lib Каталог, содержащий файлы, используемые некоторыми стандартными командами. tmp Этот каталог содержит временные файлы. /usr/joe/project/A Типичное полное имя файла; указывает на файл с именем A в каталоге project, принадлежащий пользо- вателю joe. bin/x Относительное имя файла; указывает на файл с име- нем x в подкаталоге bin текущего рабочего ката- лога. Если текущим каталогом является корень (/), имя указывает на файл /bin/x. Если текущим - 14 - каталогом является /usr/joe, то указывает на файл /usr/joe/bin/x. file1 Имя обычного файла в текущем каталоге. При работе в системе XENIX каждый пользователь нахо- дится в каталоге, который называется текущим каталогом. Все файлы и каталоги имеют "родительский" каталог. Он стоит на один уровень выше и содержит указанный файл и каталог. В файловой системе XENIX предусмотрено специ- альное сокращение для таких каталогов. Для текущего каталога: . Сокращенное имя текущего каталога. Таким образом ./файлxxx указывает на файл файлxxx, если он существует в текущем каталоге. .. Сокращенное имя "родительского" каталога для теку- щего каталога. Сокращенное имя ../.. обращается к каталогу, который стоит на два уровня выше теку- щего каталога. 3.3.4. Специальные символы В операционной системе XENIX предусмотрены средства проверки на соответствие образцам для указания одновре- менно нескольких файлов, которые соответствуют задан- ному образцу. Например, рассмотрим проблему, которая возникает при присваивании имен частям большого доку- мента, например книги. Логически он может быть разделен на несколько небольших частей, таких, как главы или разделы. Физически он также должен быть разделен, так как редактор системы XENIX vi не может работать с очень большими файлами. Таким образом вы должны разделить документ на несколько файлов. Места, в которых документ разделен, должны сле- довать в логическом порядке. Возможно, вы разделили файл по главам: chap1 chap2 ... Или если каждая глава разбита на несколько файлов вы получите: - 15 - chap1.1 chap1.2 chap1.3 ... chap2.1 chap2.2 ... С первого взгляда видно, какое место конкретный файл занимает в целом документе. Существуют другие преимущества систематического согла- шения по присвоению имен, которые не столь очевидны. А что, если вы захотите напечатать целую книгу на прин- тере? Вы можете ввести: lpr chap1.1 chap1.2 chap1.3 ... но вы быстро устанете и наверняка наделаете ошибок. К счастью, это можно сократить: последовательность имен, содержащих общий образец, можно задать с помощью специ- альных символов. Вот их описание: * Соответствует нулю или более символам. [] Соответствует любому символу внутри скобок. ? Соответствует одному любому символу. Например, вы можете ввести: lpr chap* В системе XENIX звездочка ('*') означает "ноль или более символов любого типа", таким образом указанная команда воспринимается, как "послать на принтер все файлы, имена которых начинаются со слова "chap"". Это сокращение не является свойством только команды lpr; оно может быть использовано в любой команде. Используя этот факт, вы можете вывести имена файлов книги, напечатав: ls chap* В ответ вы получите: chap1.1 chap1.2 chap1.3 ... - 16 - Звездочку можно применять не только в последней позиции в имени файла; она может появляться в любом месте и встречаться несколько раз. Звездочка сама по себе соответствует всем файлам, чьи имена не содержат симво- лов косая черта и не начинаются с точки. Таким образом: cat * выводит все файлы в текущем каталоге на экран вашего терминала. Звездочка не является единственным доступным средством механизма соответствия образцам. Предположим, что вы хотите напечатать только главы от 1 до 4 и 9. Вы можете ввести: lpr chap[12349]* Скобки ( [ и ] ) означают "соответствие любому символу внутри скобок". Границы последовательности букв и цифр могут быть сокращены, таким образом вы можете выполнить ту же команду, введя: lpr chap[1-49]* (Обратите внимание, что это соответствует не 49 файлам, а только пяти.) Буквы также могут быть использованы внутри скобок: "[a-z]" соответствует любому символу от "a" до "z". Знак вопроса соответствует одному любому символу, таким образом ls ? выводит все файлы, чье имя состоит из одного символа, а ls -l chap?.1 выводит информацию о первом файле каждой главы (т.е. chap1.1, chap2.1 ...). Если вам необходимо избежать использования специального значения этих символов ( '*', '?' и [...]) - экраниро- вать их -, заключите весь аргумент в одиночные кавычки. Например, следующая команда напечатает только файл с именем "?", а не все файлы с односимвольными именами: ls '?' Каким образом осуществляется проверка на соответствие образцам, описывается в главе 4 "Руководства пользова- теля XENIX", "Интерпретатор командного языка". - 17 - 3.4. Команды Команды используются для вызова выполняемых программ. Когда вы ввели имя команды, XENIX считывает командную строку, ищет программу с заданным именем, а затем выполняет ее, если находит. Командные строки также могут содержать аргументы, которые указывают ключи или файлы, которые могут понадобиться программе. Командная строка и синтаксис команды описаны в следующих двух частях. 3.4.1. Командная строка Независимо от того, вводите ли вы команду с терминала, или команды считываются из файла, XENIX всегда считы- вает команды из командных строк. Командная строка - это строка символов, которая считывается интерпретатором команд для определения действия, которое необходимо выполнить. Этот интерпретатор командного языка считы- вает имена команд из командной строки, находит выполня- емую программу, соответствующую имени команды, а затем выполняет эту программу. После окончания выполнения программы интерпретатор команд возобновляет чтение командной строки. Таким образом, когда вы вводите на терминале команду, вы редактируете текстовую строку, называемую буфером командной строки, который становится командной строкой только после нажатия клавиши RETURN. Этот буфер командной строки может редактироваться кла- вишами BKSP и Ctrl-u. Нажатие RETURN вызывает передачу буфера командной строки интерпретатору команд. Он счи- тывает командную строку и выполняет соответствующую команду. Если вы нажмете клавишу INTERRUPT до того, как вы нажали клавишу RETURN, буфер командной строки очис- тится. Можно ввести несколько команд в одной командной строке, при условии, что команды будут разделены точкой с запятой (';'). Например, следующая командная строка выводит текущую дату, а затем имя текущего каталога: date; pwd Команды могут быть введены для обработки в фоновом режиме, для этого необходимо добавить амперсанд ('&') к командной строке. Этот режим выполнения подобен "пакетной" обработке на других cистемах. Основное преи- мущество выполнения команд в фоновом режиме заключается в том, что вы можете выполнять другие команды во время выполнения фоновых. Таким образом du /usr>&gt;diskuse& определяет, не связываясь с вашим терминалом, как используется дисковое пространство в каталоге /usr, а это операция, отнимающая много времени. Заметьте, что - 18 - вывод помещается в файл diskuse с перенаправлением вывода при помощи знака больше. Перенаправление опи- сано в разделе 3.6.1. 3.4.2. Формат Общий формат команд следующий: cmd [ключи][аргументы][файл][...] По соглашению, имена команд представлены в нижнем регистре. Ключи определяют действие команды при выпол- нении. Они являются необязательными и обычно предшест- вуют аргументам и именам файлов. Ключи состоят из тире ('-') и идентифицирующей буквы. Например, ключ команды ls -l (произносится "минус эль") устанавливает режим полного вывода каталога, а команда ls -r устанавливает вывод содержимого каталога в обратном алфавитном порядке. В некоторых случаях ключи могут группироваться, формируя один ключевой аргумент. Нап- ример, команда ls -rl представляет собой комбинацию двух ключей, где ключ -rl указывает, что должен производится полный вывод содер- жимого каталога в обратном алфавитном порядке. Иногда несколько ключей должны задаваться отдельно, как в случае: copy -a -v источник назначение где ключ -a указывает, что команда должна требовать у пользователя подтверждения при копировании источника в назначение. Ключ -v устанавливает режим, при котором пользователю будет сообщаться о ходе копирования. Также могут быть заданы другие аргументы, например, строка для поиска, как в случае: grep 'строка текста' выходной_файл В примере выше 'строка текста' представляет собой один аргумент и является строкой, которую команда grep ищет в выходном_файле. Файл предс- тавляет собой аргумент, который указывает имя файла, - 19 - нужное команде. Большинство команд представляют собой выполняемые прог- раммы, скомпилированные компилятором языка C или каким-либо другим компилятором. Некоторые команды представляют собой выполняемые командные файлы, называ- емые "процедурами интерпретатора командного языка". Они описаны в главе 4 Руководства пользователя XENIX "Интерпретатор командного языка". 3.5. Ввод и вывод По умолчанию, в системе XENIX подразумевается, что ввод происходит c клавиатуры терминала, а вывод идет на экран терминала. Чтобы проиллюстрировать типичную команду ввода и вывода, введите: cat Эта команда ожидает ввода с клавиатуры. Она принимает в качестве ввода столько строк текста, сколько вы набе- рете до нажатия Ctrl-d для обозначения конца файла или конца передачи. Например введите: это две строки RETURN ввода RETURN Ctrl-d Когда вы нажмете Ctrl-d, ввод закончится. Команда cat сразу же выводит каждую строку после ее ввода. Так как вывод пересылается на экран терминала по умолчанию, на экран перешлются две строки. Таким образом полный сеанс будет выглядеть так: $ cat это две строки это две строки ввода ввода Потоки ввода и вывода команды могут быть перенаправлены таким образом, что ввод будет происходить из файла, а не с клавиатуры, и вывод будет производиться на принтер или в файл, а не на экран. В дополнение, вы можете соз- дать "конвейер" с помощью межпроцессных каналов, чтобы вывод одной команды стал вводом другой. Перенаправле- ние ввода-вывода и межпроцессные каналы описаны в сле- дующих двух подразделах. Если вы используете команду cat для того, чтобы переслать ввод в файл или межпро- цессный канал, пересылка не осуществится, пока вы не введете Ctrl-d для обозначения конца передачи. - 20 - 3.5.1. Перенаправление В системе XENIX файл может заменить терминал как при осуществлении операций как ввода, так и вывода. Напри- мер: ls выводит список файлов на экран вашего терминала. Но если вы введете ls > список_файлов список ваших файлов будет помещен в файл список_файлов (который будет создан, если до этого он не существо- вал). Символ, который обозначает перенаправление вывода, знак больше ('>&gt;'), означает "поместить вывод команды в указанный файл, а не выводить на экран терми- нала". В следующем примере перенаправления вывода вы можете объединить несколько файлов в один, поместив вывод команды cat в файл: cat f1 f2 f3 > temp Знак добавления вывода ('>&gt;>&gt;'), делает тоже самое, что и знак перенаправления, за исключением того, что он обоз- начает "добавить к концу". Таким образом: cat file1 file2 file3 > temp означает "добавить file1, file2 и file3 к концу файла temp, вместо того, чтобы записать новый файл, разрушая существующую в нем информацию". Как и при обыкновенном перенаправлении вывода, если файл temp не существовал, он будет создан. Аналогично, знак перенаправления ввода ('<&lt;') означает "взять ввод для программы из указанного файла, вместо терминала". Таким образом вы можете создать последова- тельность команд редактирования и поместить ее в файл с именем script. Затем вы можете выполнить эти команды по отношению к файлу набрав: ed файл < script Или если вы использовали редактор для подготовки письма в файле letter.txt, вы можете послать его нескольким пользователям командой: mail adam eve mary joe < letter.txt - 21 - 3.5.2. Межпроцессные каналы Одним из основных нововведений системы XENIX является концепция "межпроцессного канала". Межпроцессный канал - это просто способ связывания вывода одной команды с вводом другой, таким образом, что обе они работают как последовательность команд, называемая конвейером. Например: sort frank.txt george.txt hank.txt объединяет три файла с именами frank.txt, george.txt и hank.txt, а затем сортирует вывод. Предположим, что вы затем хотите найти все уникальные слова в этих файлах и посмотреть результат. Для этого вы можете ввести: sort frank.txt george.txt hank.txt > temp1 uniq < temp1 > temp2 more temp2 rm temp1 temp2 Здесь намного больше работы, чем необходимо. Желаемый результат можно получить, если взять вывод команды sort и подсоединить его к вводу uniq, затем взять вывод uniq и подсоединить его к more. Вы используете следующий конвейер: sort frank.txt george.txt hank.txt | uniq | more Символ вертикальная черта ('|') используется между командами sort и uniq для обозначения того, что вывод программы sort, который обычно посылается на терминал, должен быть перенаправлен на стандартный ввод команды uniq, который в свою очередь посылает свой вывод команде more для просмотра. Существует много других примеров межпроцессного взаимо- действия. Например, следующая команда форматирует в три столбца и разбивает на страницы список ваших фай- лов: ls | pr -3 Программа wc считает количество строк, слов и символов в своем вводе, а программа who выводит список пользова- телей, по одному на строке, работающих в данный момент в системе. Таким образом, следующая команда сообщит нам число пользователей, работающих в системе, подсчитывая число строк в выводе команды who: who | wc -l - 22 - Следующая команда подсчитывает число файлов в текущем каталоге: ls | wc -l Обратите внимание на разницу между выводом команд wc -l и wc. По умолчанию, wc выводит количество строк, слов и символов в вводе. А wc с ключом -l выводит только количество строк. Любая программа, которая считывает с клавиатуры терми- нала, вместо этого может читать из межпроцессного канала. Любая программа, которая выводит на экран тер- минала, может посылать вывод в межпроцессный канал. В конвейере можете быть столько элементов, сколько вы захотите. 4. Задачи 4.1. Введение В этой главе рассказывается, как можно решать обычные задачи с помощью системы XENIX. Отдельные команды, используемые для решения таких задач, описаны более подробно в Справочном руководстве XENIX. 4.2. Получение доступа к системе Для того, чтобы использовать систему XENIX, в первую очередь вы должны получить к ней доступ. Для этого вам нужно войти в систему. Когда вы вошли в систему, вы попадаете в собственную рабочую область. Процесс вхож- дения в систему, изменения пароля и выхода из системы, описан ниже. 4.2.1. Вход в систему Перед тем, как вы сможете войти в систему, вы должны "зарегистрироваться". Ваше имя должно быть добавлено к списку пользователей, а также вам должны пррисвоить пароль и предоставить почтовый ящик. В зависимости от режима администрирования вашей сис- темы, возможно, вам самим необходимо будет добавить свое имя к списку пользователей, либо эта задача будет возложена на кого-либо еще. Если вы сами должны заре- гистрироваться в системе, для получения дополнительной информации обратитесь к Руководству оператора и к раз- делу mkuser(C) в Справочном руководстве по системе XENIX. В настоящем разделе подразумевается, что ваша - 23 - учетная структура в системе уже создана. Обычно, когда с системой не работают, на экране высве- чено приглашение "login:". Если ваш экран пуст или выводит бессмысленные символы, нажмите несколько раз клавишу INTERRUPT. Когда появится приглашение "login:", выполните следую- щую последовательность шагов: 1. Введите ваше регистрационное имя и нажмите RETURN. Если вы ошиблись, нажмите Ctrl-u и введите имя заново. После того, как вы нажали RETURN, на экране появится слово "Password:". 2. Очень внимательно введите свой пароль, после чего нажмите RETURN. Буквы не будут отображаться на экране во времы ввода, а курсор не будет дви- гаться. Если вы ошиблись, нажмите RETURN и повто- рите всю процедуру входа в систему заново. Если вы ввели регистрационное имя и пароль правильно, на экране появится "символ-приглашение". Обычно это знак денежной единицы ('$'). Он говорит о том, что сис- тема XENIX готова принимать команды с клавиатуры. Если вы ошиблись, система выведет сообщение: Login incorrect login: Если вы получили такое сообщение, повторите описанную выше процедуру. Чтобы получить доступ к системе, вы должны правильно ввести регистрационное имя и пароль; система не позволяет исправлять ошибки при вводе пароля. В зависимости от того, как настроена ваша система, после входа вы можете увидеть сообщение, выводимое при входе в систему, которое гласит что-нибудь типа: "Добро пожаловать в систему XENIX", или объявление, представ- ляющее интерес для всех пользователей. 4.2.2. Выход из системы Процедура выхода довольно проста, вам необходимо только нажать Ctrl-d в начале строки. В общем случае, в системе XENIX Ctrl-d обозначает конец файла, и довольно часто используется в - 24 - программах для обозначения конца ввода с клавиатуры. В этих случаях Ctrl-d не выведет вас из системы; просто закончится ввод в отдельную программу, если вы находи- лись в ней. Это значит, что иногда вам придется нес- колько раз нажать Ctrl-d для того, чтобы выйти из сис- темы. Например, если вы находитесь в программе mail, вы один раз должны нажать Ctrl-d для того, чтобы выйти из этой программы, и еще раз для того, чтобы выйти из системы. 4.2.3. Изменение пароля Для того, чтобы предотвратить несанкционированный дос- туп к системе пользователей, каждый зарегистрированный пользователь должен иметь свой пароль. Когда для вас впервые в системе создается учетная структура, пароль вам присваивается системным администратором. Некоторые системы XENIX требуют, чтобы вы меняли свой пароль регулярно через некоторые интервалы времени. Независимо от того, потребуют этого от вас или нет, неплохо бы менять свой пароль для поддержания безопасности сис- темы. В этом разделе рассказывается, как менять пароль. Для изменения пароля используйте команду passwd. Для этого: 1 Введите: passwd и нажмите RETURN. Появится следующее сообщение: Changing password for пользователь Old password: 2 Внимательно введите ваш старый пароль. Он не отоб- ражается на экране. Если вы ошиблись, нажмите RETURN. Появится сообщение "Sorry", а затем сис- темное приглашение. Начните снова с шага 1. 3 После того, как вы введете ваш старый пароль, поя- вится сообщение: New password: Введите ваш новый пароль и нажмите RETURN. 4 Появится сообщение: Re-enter new password: Введите ваш новый пароль снова. Если вы ошиблись, - 25 - нажмите RETURN. Тогда появится сообщение: They don't match; try again и вы должны начать снова с шага 1. Когда вы все сделаете правильно, появится системное приграше- ние. 4.3. Установка конфигурации вашего терминала В большинстве систем конфигурация основного монитора уже настроена на работу с XENIX. Однако к системе XENIX могут быть подсоединены другие терминалы различных типов. В этих случаях важно знать, как установить пара- метры терминала, и как указать, с каким терминалом вы работаете. Также вы, возможно, захотите изменить стан- дартную конфигурацию монитора. В следующем разделе обсуждаются эти темы. 4.3.1. Смена терминала Каждый раз, когда вы входите в систему, выводится тип вашего терминала. Если вам когда-нибудь понадобится войти в систему на терминале другого типа, отличного от того, который вы обычно используете, вам, возможно, потребуется изменить окружение. Для этого вам необхо- димо отредактировать файл .profile в вашем регистраци- онном каталоге. Чтобы это сделать, с помощью текстового редактора найдите строку tset, которая выглядит при- мерно так: eval 'tset -m :\?unknown -s -r -Q' Измените слово unknown (неизвестный) на тип вашего тер- минала. Например, если вы обычно входите в систему с терминала vt100, строка будет выглядеть так: eval 'tset -m :\?vt100 -s -r -Q' Теперь каждый раз при входе в систему вам будет выво- диться сообщение: TERM = (vt100) Нажмите RETURN, и vt100 будет установлен в качестве типа вашего терминала, или введите другой тип терминала и нажмите RETURN. - 26 - 4.3.2. Установка параметров терминала Существует несколько параметров терминала, которые могут быть установлены командой stty. При вызове этой команды без ключей она выводит текущие установленные параметры. Например, типичный вывод может выглядеть так: speed 9600 baud erase '^h' ; kill '^u' even -nl Каждая из вышеперечисленных характеристик терминала может быть установлена командой stty. Для получения дополнительной информации смотрите stty(C) в Справочном руководстве XENIX. 4.4. Редактирование командной строки Когда вы сидите перед терминалом и вводите команды с клавиатуры, вы можете использовать некоторые специаль- ные клавиши. Наиболее полезные из них описаны ниже. 4.4.1. Ввод командной строки Ввод командной строки с вашего терминала заключается в наборе символов и нажатии клавиши RETURN. После нажатия RETURN компьютер читает командную строку и выполняет указанные в ней команды. Вы можете ввести столько командных строк, сколько вы хотите, не ожидая окончания выполнения команд, так как система XENIX поддерживает ввод символов с опережением. 4.4.2. Удаление командной строки При вводе команд неизбежно появление ошибок при наборе (опечаток). Чтобы удалить текущую командную строку, нажмите Ctrl-u. 4.4.3. Приостановка вывода на экран Во многих случаях вы будете просматривать содержимое файла на экране терминала. Содержимое длинных файлов выводится гораздо быстрее, чем вы можете читать. Для временной приостановки вывода программы на экран терми- нала нажмите Ctrl-s. Для продолжения вывода нажмите Ctrl-q. - 27 - 4.5. Работа с файлами Работа с файлами (создание, объединение, вывод содержи- мого, копирование, перемещение, присвоение имени и уда- ление файлов) является одной из наиболее важных возмож- ностей, которые предоставляет операционная система. В нижеследующем разделе описываются команды, которые реа- лизуют эти функции. 4.5.1. Создание файла Чтобы создать файл и поместить в него текст, исполь- зуйте редактор vi, который описан в главе 2 Руководства пользователя XENIX, "vi: текстовый редактор". Если по каким-либо причинам вы захотите создать пустой файл, введите: > имя_файла где имя_файла - это имя пустого файла. В общем случае, новые файлы создаются командами по мере необходимости. 4.5.2. Вывод содержимого файла Команда more осуществляет вывод содержимого файла поэк- ранно. Формат команды следующий: more ключи имя_файла more полезно использовать, если вы хотите только пос- мотреть файл, не внося изменений. Например, чтобы вывести содержимое файла memos, введите: more memos more может быть вызвана с ключами, которые устанавли- вают режим вывода файла и место, с которого надо начать вывод. Вот некоторые ключи: +номер_строки Начинает вывод со строки, определенной аргументом номер_строки. +/текст Начинает вывод за две строки до текста, где текст - это слово или число. Если текст состоит из двух или более слов, их необходимо заключить в двойные кавычки. -c Перерисовывает экран вместо его прокрутки. - 28 - -r Выводит управляющие символы, которые обычно игно- рируются. Например, чтобы начать просмотр файла memo с места, где впервые встречаются слова "net gain", введите: more +/"net gain" Если файл не влезает на один экран, в нижней строке выводится процентное отношение оставшейся части. Для просмотра оставшейся части файла используйте команды прокрутки: RETURN Промотать вперед на одну строку. d Промотать вперед на половину экрана. ПРОБЕЛ Промотать вперед на полный экран. nПРОБЕЛ Промотать вперед на n строк. . Повторить предыдущую команду. Вы не можете просматривать файл в обратном направлении, к началу файла. Вы можете осуществить поиск вперед по образцу с помощью команды /. Например, если вы хотите найти образец "net gain", вве- дите: /net gain/ и нажмите RETURN. more выведет сообщение: ...skipping в верхней части экрана, а затем промотает до места, расположенного за две строки от найденной последова- тельности символов "net gain". Если во время просмотра файла командой more вы решите, что хотите изменить его, вы можете вызвать редактор vi, нажав: v Смотри главу 2 "vi: текстовый редактор" Руководства пользователя XENIX для получения информации о работе с - 29 - vi. more заканчивает работу автоматически, при достижении конца файла. Если вы хотите выйти из этой программы раньше, введите: q Команды head и tail выводят, соответственно, первые и последние десять строк файла. Они полезны для проверки содержимого отдельного файла. Например, чтобы посмотреть первые десять строк файла memo, введите: head memo Вы можете определить количество строк, выводимых коман- дами head и tail. Например: tail -4 memo выводит последние четыре строки файла memo. Команда cat также выводит содержимое файла. Вывод про- исходит до тех пор, пока вы не нажмете Ctrl-s, чтобы остановить его. Нажав Ctrl-q, вы можете продолжить просмотр. Программа заканчивает работу автоматически при достижении конца файла. Если вы хотите закончить раньше, нажмите INTERRUPT. Чтобы вывести содержимое одного файла, введите: cat file1 Чтобы вывести содержимое нескольких файлов, введите: cat file1 file2 file3 4.5.3. Объединение файлов Команда cat часто используется для объединения несколь- ких файлов в один. Для того, чтобы объединить два файла с именами file1 и file2 в новый файл с именем bigfile, введите: cat file1 file2 >bigfile Заметьте, что здесь мы записываем содержимое двух фай- лов в новый файл с именем bigfile. Знак больше ('>&gt;') используется для перенаправления вывода команды cat в новый файл. - 30 - Вы также можете использовать команду cat для добавления одного файла к концу другого. Например, чтобы добавить file1 к file2, введите: cat file1 >> file2 Содержимое file1 добавится к file2. file1 тем не менее остается как отдельный файл. 4.5.4. Перемещение файлов Команда mv перемещает один файл в другой в том же или другом каталоге. Например, чтобы переместить один файл, с именем текст, в другой, с именем книга, введите: mv текст книга После завершения операции в рабочем каталоге не будет существовать файла с именем текст, так как он будет переименован в книга. Чтобы переместить файл в другой каталог, в качестве последнего аргумента команды mv задайте имя каталога назначения. Например, для того чтобы переместить файлы file1 и file2 в каталог /tmp, введите: mv file1 file2 /tmp В вашем рабочем каталоге теперь не существует этих двух файлов, они расположены в каталоге /tmp. Вышеуказанная команда делает то же самое, что и последовательность из двух следующих команд: mv file1 /tmp mv file2 /tmp Команда mv всегда проверяет, не является ли последний аргумент именем каталога, и если это так, все файлы, заданные другими аргументами перемещаются в этот ката- лог. 4.5.5. Переименование файла Чтобы переименовать файл, надо просто "переместить" его в файл с новым именем: старое имя файла будет удалено. Таким образом, для того, чтобы переименовать файл с именем anon в johndoe, введите: mv anon johndoe - 31 - Заметьте, что перемещение и переименование файлов представляют собой по сути одинаковые операции. 4.5.6. Копирование файла Существует два вида команды cp: в одном случае файлы копируются в каталог, а в другом случае файл копируется в другой файл. Таким образом, чтобы скопировать три файла в каталог с именем filer, введите: cp file1 file2 file3 filer В вышеуказанной команде три файла копируются в каталог filer; при этом исходные файлы остаются в рабочем ката- логе. Заметьте, что имена одинаковы в двух каталогах. Как и команда mv, cp всегда проверяет, не является ли последний аргумент именем каталога, и если это так, все файлы, заданные другими аргументами, копируются в этот каталог. Чтобы создать две копии файла в вашем рабочем каталоге, вы должны изменить имя одной копии. Для того, чтобы сделать это, вы можете вызвать команду копирования сле- дующим образом: cp file filecopy После выполнения вышеприведенной команды в рабочем каталоге будет существовать два разных файла с одинако- вым содержанием. Научиться копировать файлы можно с помощью раздела 4.6.7, "Копирование каталога", из этой главы. 4.5.7. Удаление файла Чтобы стереть или удалить файлы, введите: rm file1 file2 Этой командой файлы file1 и file2 удаляются из рабочего каталога. Команда: rm -i file1 file2 позволяет вам удалять файлы в диалоговом режиме, запра- шивая, действительно ли вы хотите удалить каждый из файлов file1 и file2. Если вы нажмете y, а затем RETURN, данный файл будет удален; если вы нажмете n, файл останется нетронутым. Эта команда полезна при чистке каталога, который содержит много файлов. - 32 - 4.5.8. Поиск файлов Команда find производит поиск файлов с заданными име- нами. Команда полезна для нахождения местоположения файлов с одинаковыми именами, или для нахождения файла, если вы забыли каталог, в котором он находится. Команда имеет следующий формат: find имя_каталога -name имя_файла -print где имя_каталога - это имя каталога, в котором вы хотите искать. find осуществляет поиск рекурсивно, начиная с указанного каталога, просматривая все файлы и подкаталоги каталога, заданного именем_каталога. Ключ -name означает, что вы ищете файлы с указанными именами_файлов. (Существует несколько других режимов поиска командой find, смотри find(C) в Справочном руко- водстве по системе XENIX.) имя_файла - это имя файла, который вы хотите найти. Ключ -print означает, что вы хотите вывести на экран вашего терминала полные имена файлов, которые соот- ветствуют указанному имени_файла. Вы можете перенапра- вить этот вывод в файл, используя символ перенаправле- ния ('>&gt;'). (Существует еще несколько операций, которые вы можете осуществлять командой find, например удаление и перемещение файлов; смотри find(C) в Справочном руко- водстве XENIX.) Например, следующая команда найдет все файлы с именем memo в каталоге /usr/joe и всех его под- каталогах: find /usr/joe -name memo -print Вывод, к примеру, мог бы выглядеть так: /usr/joe/memo /usr/joe/accounts/memo /usr/joe/meetings/memo /usr/joe/mail/memo 4.5.9. Связывание одного файла с другим (файлы- ссылки) Команда ln объединяет два файла в различных каталогах таким образом, что когда в одном каталоге файл меня- ется, он также меняется и в другом. Это может быть полезно, если нескольким пользователям надо разделять информацию, или если вы хотите, чтобы один файл нахо- дился в нескольких каталогах. Эта команда имеет - 33 - следующий формат: ln файл новый_файл где файл - это исходный файл, а новый_файл - новый, связанный с первым файл-ссылка. Например, следующая команда связывает файл memos в каталоге /usr/joe с фай- лом joememos в каталоге /usr/mary: ln /usr/joe/memos /usr/mary/joememos Когда бы /usr/joe/memos ни изменялся, всегда будет изменяться и /usr/mary/joememos. Когда вы создаете ссылку на файл, имя файла-ссылки свя- зывается с i-узлом. i-узел определяет уникальный набор данных на диске. С этими данными могут быть связаны одно или более имя. Таким образом, описанная выше команда гарантирует, что файлы каталог1/файл1 и каталог2/файл2 будут одинаковы. Существуют три вещи, которые не сразу очевидны: 1. Использование ссылок для больших наборов файлов при необходимости использовать их параллельно может сэкономить значительный объем дискового пространства. 2. Использование ссылок на файл несколькими пользова- телями опасно, так как любой из них может изменить файл, и, таким образом, повлиять на содержимое всех файлов-ссылок. 3. Удаление файла из каталога не удаляет другие ссылки на него. Таким образом, в действитель- ности, файл не удаляется из системы. Например, если вы удалите файл, который имеет четыре ссылки, три из них останутся. Подробнее о ссылках см. ln(C) в Справочном руководстве XENIX. 4.6. Операции с каталогами Из-за иерархической организации файловой системы в сис- теме XENIX существует множество каталогов и подкатало- гов. Каждый пользователь имеет свой собственный каталог в файловой системе. В вашем пользовательском каталоге вы можете создавать, удалять и копировать каталоги. Ниже описываются команды, которые дают вам возможность работать с каталогами. - 34 - 4.6.1. Вывод имени вашего рабочего каталога Все команды выполняются относительно рабочего каталога. Имя этого каталога выдается командой pwd, которая озна- чает "print working directory" (вывести рабочий ката- лог). Например, если ваш рабочий каталог /usr/joe, то когда вы введете: pwd вы получите: /usr/joe Вы всегда должны представлять себя "живущим" в вашем рабочем каталоге. 4.6.2. Вывод содержимого каталога Вы можете вывести содержимое каталога командой lc. Эта команда сортирует имена файлов и каталогов внутри заданного каталога, а затем выводит их. Если имя ката- лога не задано, lc выводит содержимое текущего ката- лога. Команда lc имеет следующий формат: lc ключи имя Например, чтобы вывести содержимое каталога work, вве- дите: lc work Вывод может выглядеть примерно так: accounts meetings notes mail memos todo Если имя не задано, lc выведет содержимое текущего каталога. Например, команда: lc выведет имена файлов и подкаталогов в этом каталоге. Следующие ключи управляют режимами вывода информации команды lc: -a Выводит все файлы в каталоге, включая "скрытые" файлы ( имена которых начинаются с точки, например .profile и .mailrc). -r Выводит имена в обратном алфавитном порядке. - 35 - -t Выводит имена файлов, упорядочивая их по дате изменения - сначала наиболее поздние (недавно изменялись). При использовании вместе с ключом -r сначала выводятся наиболее старые (давно не изме- нялись). -R Выводит все файлы и каталоги в текущем каталоге, плюс файлы и каталоги, которые стоят "ниже" по отношению к текущему. "R" означает "recursive" (рекурсивно). -F Помечает каталоги косой чертой ('/'), а выполняе- мые файлы звездочкой ('*'). Команда ls работает также, как и команда lc, за исклю- чением того, что список файлов выводится не в несколько столбцов, а в один. Команда ls -l выводит полный список содержимого каталога, который выглядит примерно так: total 501 drwxr-x--- 2 boris grp1 272 Apr 5 14:33 dir1 drwxr-x--- 2 enid grp1 272 Apr 5 14:33 dir2 drwxr-x--- 2 iris grp1 592 Apr 6 11:12 dir3 -rw-r----- 1 olaf grp2 282 Apr 7 15:11 file1 -rw-r----- 1 olaf grp2 72 Apr 7 13:50 file2 -rw-r----- 1 olaf grp2 1403 Apr 1 15:22 file3 Для каждого файла и каталога указана следующая информа- ция (слева направо): - Коды доступа - Число ссылок - Владелец - Группа - Размер в байтах - Время последнего изменения - Имя файла Про информацию из этого списка и о том, как изменять коды доступа, вы узнаете из раздела 4.8 "Использование кодов доступа файла и каталога". Более подробно вывод содержимого каталога описан в раз- деле ls(C) в Справочном руководстве XENIX. - 36 - 4.6.3. Создание каталога Для создания подкаталога в вашем рабочем каталоге используйте команду mkdir. Например, чтобы создать новый каталог с именем phonenumbers, просто введите: mkdir phonenumbers После выполнения этой команды в вашем рабочем каталоге будет существовать новый пустой каталог. 4.6.4. Удаление каталога Для удаления каталога, расположенного в вашем рабочем каталоге, используйте команду rmdir. Например, чтобы удалить каталог phonenumbers из текущего каталога, введите: rmdir phonenumbers Каталог phonenumbers должен быть пустым, для того, чтобы вы смогли его удалить; это предотвращает катаст- рофические удаления файлов и каталогов. Если вы хотите испытывать судьбу, то вы можете использовать рекурсив- ное удаление содержимого каталога с помощью команды rm, но здесь это описываться не будет. Для получения допол- нительной информации смотри раздел rm(C) в Справочном руководстве XENIX. 4.6.5. Переименование каталога Для переименования каталога используйте команду mv. Например, чтобы переименовать каталог little.dir в big.dir введите: mv little.dir big.dir Эта команда просто переименовывает каталоги; файлы не перемещаются. 4.6.6. Перемещение каталога Команда mv также перемещает каталоги. Она имеет следую- щий формат: mv старый_каталог новый_каталог где старый_каталог - это каталог, который уже сущест- вует. Например, чтобы переместить каталог /usr/joe/accounts в /usr/joe/overdue, введите: - 37 - mv /usr/joe/accounts /usr/joe/overdue Полное имя каталога /usr/joe/accounts теперь /usr/joe/overdue. ?????.sh 3 "Создание копии каталога" Команда copy копирует каталоги. Она имеет следующий формат: copy ключи старый_каталог новый_каталог Чтобы скопировать все файлы из каталога /usr/joe/memos в каталог /usr/joe/notes, введите: copy /usr/joe/memos /usr/joe/notes Файлы из каталога usr/joe/memos скопируются в /usr/joe/notes. Команда copy имеет следующие ключи: -l Устанавливает связь копии файла (создаются файлы- ссылки) с исходным файлом. -m Устанавливает для копий файла ту же самую дату изменения, что и для исходного файла. -r Рекурсивное копирование каталога, т.е. копируются все подкаталоги указанного каталога. 4.7. Перемещение по файловой системе При работе с системой XENIX полезно представлять себе древовидную структуру файлов и каталогов. Каждый ката- лог представляет собой место, в которое и из которого вы можете перемещаться. В каждый момент времени вы находитесь в каком-то месте в древовидной структуре. Это место называется либо рабочим каталогом, либо теку- щим каталогом. Команды, используемые для нахождения вашего местоположения и перемещения по древовидной структуре, описаны ниже. 4.7.1. Определение местоположения Ваше текущее место в файловой системе это имя рабочего каталога. Вы можете определить это имя командой pwd, которая означает "print working directory" (вывести рабочий каталог). Например, если вы находитесь в ката- логе /usr, то когда вы введете команду: pwd вы получите имя: /usr - 38 - 4.7.2. Смена рабочего каталога Рабочий каталог представляет собой ваше местоположение в системе: это "то, где вы находитесь" в системе XENIX. Для того, чтобы сменить это место, используйте команду "сменить каталог" - cd: cd Она меняет ваш рабочий каталог на ваш домашний каталог. Чтобы перейти в любой другой каталог, укажите его имя как аргумент команды cd. Например, команда: cd /usr перемещает вас в каталог /usr. Так как вы находитесь "в" вашем рабочем каталоге, смена каталогов подобна "путешествию" из одного каталога в другой. Чтобы перейти на один каталог выше текущего, введите: cd .. Например, указанная выше команда переместит вас из /usr/joe/work в /usr/joe. Точно также команда: cd ../.. переведет вас из /usr/joe/work в /usr, перемещая вас вверх на два каталога. 4.8. Использование кодов доступа файла и каталога Система XENIX позволяет владельцу файла ограничить дос- туп к файлам и каталогам, указывая, кто может читать, изменять или выполнять файлы, которые принадлежат ему. Для определения кодов доступа, связанных с заданным файлом или каталогом, используйте команду ls -l. Вывод этой команды выглядит примерно так: total 501 drwxr-x--- 2 boris grp1 272 Apr 5 14:33 dir1 drwxr-x--- 2 enid grp1 272 Apr 5 14:33 dir2 drwxr-x--- 2 iris grp1 592 Apr 6 11:12 dir3 -rw-r----- 1 olaf grp2 282 Apr 7 15:11 file1 -rw-r----- 1 olaf grp2 72 Apr 7 13:50 file2 -rw-r----- 1 olaf grp2 1403 Apr 1 15:22 file3 Коды доступа представляют собой первые десять символов в строке вывода. Коды доступа для dir1, первого файла - 39 - в вышеприведенном списке, представляют собой последова- тельность: drwxr-x--- Первый символ обозначает тип файла. Он может быть сле- дующим: - Обозначает обыкновенный файл. d Обозначает каталог. c Обозначает специальное устройство символьного типа, например, принтер или терминал. b Обозначает специальное устройство блокового типа, например, жесткий или гибкий диск. n Обозначает специальный файл имени (т.е. семафор, используемый для управления доступом к некоторому ресурсу). s Обозначает разделяемый файл данных. p Обозначает межпроцессорный канал, которому присво- ено имя. Следующие девять символов, слева направо, представляют собой девять наборов по девять кодов доступа в каждом. Каждый набор управляет доступом для: - Владельца - Группы - Прочих пользователей Внутри каждого набора три символа обозначают, соот- ветственно, полномочия на чтение файла, его изменение (т.е. запись в него) и выполнение файла как команду. Для каталога полномочие "на выполнение" означает разре- шение искать в каталоге любые входящие в него файлы или каталоги. Коды доступа для обыкновенного файла имеют следующие значения: r Файл можно читать w В файл можно писать (его можно изменять) x Файл можно выполнять - 40 - - Соответствующие полномочия отсутствуют Для каталогов коды доступа имеют следующие значения: r Файлы каталога можно вывести; код "x" каталога должен быть установлен. w В каталоге можно создавать или удалять файлы; так же, как и с "r", код "x" каталога должен быть установлен. x В каталоге можно вести поиск. Прежде чем вы смо- жете перейти в каталог с помощью команды cd, полу- чить доступ к файлу, или вывести файлы этого ката- лога, для этого каталога должен быть установлен код "x". Помните, что пользователь должен иметь разрешение "x", чтобы сделать что-либо полезное в каталоге. Ниже приведены несколько типичных комбинаций кодов дос- тупа для каталога: d--------- Доступ закрыт. Это режим, который запрещает доступ к каталогу классу пользователей. drwx------ Разрешает доступ только владельцу. Он может использовать команду lc, создавать файлы, удалять файлы, получать доступ к файлам и переходить в каталог с помощью команды cd. Это типичные коды доступа для владельца каталога. drwxr-x--- Разрешает доступ для членов группы. Они могут использовать команду lc и получать доступ к файлу в соответствии с кодами доступа файла. Члены группы могут переходить в этот каталог, используя команду cd, но не могут создавать или удалять файлы внутри него. Это типичные коды доступа вла- дельца, дающего другим необходимый доступ к файлам в своем каталоге. drwx--x--x С этими кодами доступа все пользователи, за исклю- чением владельца, не могут использовать команду lc, но могут переходить в каталог с помощью команды cd. В этой главе описаны только обычные файлы, выполняемые файлы и каталоги. Сведения о других типах файлов смотри в разделе ls(C) в Справочном руководстве XENIX. - 41 - 4.8.1. Изменение кодов доступа Коды доступа файла или каталога можно изменить командой chmod. Она полезна, если вы создали файл с одним режи- мом защиты, но хотите разрешить прочим пользователям читать, писать или выполнять его. Формат команды chmod следующий: chmod инструкция имя_файла Поле инструкция указывает какие коды доступа для какого класса пользователей вы хотите изменить. Существует три класса пользователей и они обозначаются следующим обра- зом: u Пользователь, владелец файла или каталога. g Группа, которой принадлежит пользователь. o Прочие - все пользователи системы. a Все классы пользователей. Существует три типа кодов доступа: r Читать - разрешает указанным пользователям смот- реть, но не изменять или удалять файл. w Писать - разрешает указанным пользователям изме- нять или даже удалять файл. x Выполнять - разрешает указанным пользователям выполнять файл как команду. Например, предположим, что файл file1 существут со сле- дующими кодами доступа: -rw-r----- В этом примере владелец файла может читать и писать в файл, члены группы могут читать его, а прочие пользова- тели не имеют доступа к файлу вообще. Для того, чтобы разрешить читать file1 всем классам пользователей, введите: chmod a+r file1 В инструкции команды (a+r), "a" обозначает "all" (все). Получившиеся коды доступа установлены следующим обра- зом: - 42 - -rw-r--r-- Если file1 имеет следующие коды доступа: -rw------- Следующая команда разрешает читать и писать в этот файл только членам группы: chmod g+wx file2 Теперь коды доступа будут выглядеть следующим образом: -rw--wx--- Чтобы запретить владельцу файла и членам группы писать и выполнять его, введите: chmod ug-wx file1 4.8.2. Изменение полномочий на просмотр каталога Каталоги также имеют полномочия на выполнения. Этот атрибут означает полномочия на просмотр, а не на выпол- нение, так как каталоги нельзя выполнить. Если эти полномочия не даны какому-то пользователю, то тогда он не сможет даже посмотреть имена файлов в этом каталоге. Например, предположим, что каталог dir1 имеет следующие атрибуты: drwxr-xr-x Чтобы запретить просматривать каталог прочим пользова- телям, введите: chmod o-xr dir1 Новые атрибуты будыт выглядеть следующим образом: drwxr-x--- 4.9. Обработка информации Во многих случаях в файлах будет содержаться информа- ция, которую вы, возможно, захотите обработать. В сис- теме XENIX существуют различные сервисные программы для обработки информации. В следующих разделах описываются некоторые такие программы и как ими пользоваться. - 43 - 4.9.1. Сравнивание файлов Для сравнивания двух текстовых файлов используйте команду diff. Она выводит те строки из указанных фай- лов, которые различаются. Например, предположим, что файл с именем men содержит следующие строки: Теперь пора всем настоящим мужчинам прийти на помощь своей стороне а файл с именем women содержит следующее: Теперь пора всем настоящим женщинам прийти на помощь своей стороне В этом случае команда: diff men women Выведет следующее: 1c1 < Теперь пора всем настоящим мужчинам --- < Теперь пора всем настоящим женщинам Различия между тремя файлами можно получить при помощи команды diff3. Подробнее эта команда описана в разделе diff3(C) в Справочном руководстве XENIX. 4.9.2. Отображение аргументов Команда echo выводит аргументы на стандартный вывод. Например, введя: echo "Now is the time For all good men To come to the Aid of their party" Вы получите: "Now is the time For all good men To come to the Aid of their party" - 44 - Команда echo особенно полезна при программировании на языке интерпретатора команд shell. Cм. главу 4 "Интерпретатор командного языка" в Руководстве пользо- вателя XENIX. 4.9.3. Сортировка файла Одной из наиболее полезных команд обработки файлов является команда sort. По умолчанию, sort сортирует строки файла в соответствии с последовательностью