Фэндом


Брайан В. Керниган bwk@research.bell-labs.com

Задача этого документа — помочь вам начать использовать операционную систему Plan 9. Он написан обычным пользователем Plan 9, который ни коим образом не имеет отношения к группе ее разработчиков. Документ нацелен на аудиторию пользователей с Unix прошлым.

Приступаем Править

Предполагается: (1) что вы или кто-нибудь, кому вы доверяете, прочитал, разобрался и выполнил процедуру установки Plan 9; (2) что вы хотя бы просмотрели обзорный документ Plan 9 от Bell Labs, в котором дается общее описание Plan 9. Также много полезных объяснений и примеров содержит документ Использование пространства имен в Plan 9. Также предполагается, что не далеко от вас находится первый том руководства по Plan 9, так как вам потребуется читать man-страницы команд, когда их названия будут появляться здесь.

Ваши действия после включения терминала зависят от того, как установлена ваша система Plan 9; детали различаются для автономной системы и терминала, соединенного с файловым сервером и CPU сервером. Далее речь идет как раз об этом.

Также как .profile выполняется оболочкой в Unix системах, когда вы начинаете сеанс работы, файл lib/profile выполняется оболочкой в Plan 9. Для создания пользовательского эккаунта используется команда newuser, которая создает домашний каталог $home, а в нем несколько подкаталогов (bin, bin/rc, lib и tmp), затем устанавливает файл профиля lib/profile. Последний выглядит примерно вот так:

bind -a $home/bin/rc /bin
font = /lib/font/bit/pelm/euro.9.font
switch($service){
case terminal
	prompt=('term ' '	')
	exec 8½
case cpu
	bind -b /mnt/term/mnt/8½ /dev
	prompt=('cpu ' '	')
}

Большинство интересных особенностей Plan 9 представлено именно в этом файле.

Оконная система 8½ Править

Оконная система Plan 9 называется 8½; выбор terminal в операторе case профиля запускает 8½ командой

exec 8½

8½ обеспечивает меньшую «гибкость» и несомненно значительно меньшие возможности, чем xterm в X терминалах, но я, все же, предпочитаю использовать именно ее.

Оконная система обрабатывает весь текст на экране одинаково; с помощью мыши вы можете редактировать все что видите, у вас есть возможность редактировать и повторно использовать введенные команды, перенаправлять вывод или ввод программы и вновь использовать их, и т.п. Эта способность редактирования предыдущих команд освобождает от потребности их повторного ввода, и вам никогда не захочется вернуться назад к чему-нибудь вроде xterm.

8½ может работать рекурсивно: вы создаете новое окно, в нем запускаете 8½, и все что вы там делаете будет изолировано от среды. В системе 8½ нет аналога управлению виртуальными окнами, к примеру, как у VTWM и его огромного множества (или даже нескольких) иконок, но вы можете перемещать окно даже за пределы экрана, скрывать его, а затем вызывать из всплывающего меню, что само по себе является свободным эквивалентом иконизации.

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

exec 8½ -i lib/windows

Это свойство может быть полезным при установке часто используемых окон:

#!/bin/rc
window 'x0 y0 x1 y1' командная строка
...

где x0,y0 и x1,y1 — координаты окна. Window создает окно в указанном месте, а затем запускает в нем команду. Для непосредственной вставки команд в файл может использоваться программа wloc, которая выводит имена и размещения всех окон в правильном формате. Нужным образом разместите окна программ, после этого запустите wloc и скопируйте (snarf) ее вывод.

Команды Править

Большинство стандартных команд Unix существуют в почти той же форме в Plan 9, это команды: cat, ls, cd, pwd, cp, mv, diff, grep и awk. Вы заметите незначительные различия в их поведении, но в большинстве случаев вам не стоит об этом беспокоиться.

Оболочка rc Править

Одной из главных программ любой операционной системы является оболочка, в Plan 9 используется оболочка под названием rc. Для запуска команд интерактивно она почти эквивалентна оболочкам Bourne или Korn, так что метасимволы вроде * и ? — ведут себя предсказуемо, простые перенаправления >, >> и | — также функционально одинаковы. Более простое использование кавычек: все заключается в одинарные кавычки; двойные кавычки и обратная косая черта не имеют специального назначения. Что увидеть одну кавычку, заключенную в кавычки, удвойте ее:

echo ''

В программировании, rc имеет мало общего с sh, что досадно. В частности, у них различаются управляющие структуры if и for.

Все сценарии должны начинаться со строки:

#!/bin/rc

Установка переменных окружения:

var = 'значение'

при чем кавычки могут опускаться, если значение не содержит пробелов. Переменные окружения доступны как $var: определенные переменные инициализируются в начале работы, включая user (ваше имя), home (ваш домашний каталог), и service, принимающая значение terminal, если вы работаете на терминале и CPU, если вы работаете на CPU сервере.

Каталоги и пути поиска Править

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

Пространство имен управляется командами bind и mount. В частности, команда

bind -a $home/bin/rc /bin

в профиле связывает каталог $home/bin/rc с /bin, формируя союзный каталог. (Точнее, она делает /bin псевдонимом для этого союза.) Кроме текущего каталога, оболочка выполняет поиск программ только в /bin, реально же она проходит по всем каталогам, которые были соединены вместе. По соглашению, ваши собственные сценарии оболочки находятся в $home/bin/rc.

Когда вы начинаете сеанс роботы, несколько каталогов связываются с /bin, включая /rc/bin, содержащий сценарии оболочки, и /$cputype/bin, содержащий двоичные файлы для вашего типа процессора. Переменная cputype содержит информацию о типе процессора, который вы используете, типично это 386, sparc, mips или 68020. Когда вы запускаете программу вроде ls, производится поиск версии для вашего процессора в /bin и ее выполнение. Если вы впоследствии выполните команду cpu для доступа к CPU серверу, в этом процессе и запущенных им, переменная cputype будет содержать тип процессора CPU сервера и команда ls (вновь из /bin), которую вы запустите там, будет правильным двоичным файлом для этого процессора.

Механизм союзных каталогов заменяет путь поиска (переменная PATH) стандартных оболочек Unix. Насколько вы поняли, все исполняемые программы находятся в /bin. Введите

lc /bin

чтобы увидеть список имен всех доступных исполняемых программ. Интересные файловые системы

Одной из главных идей Plan 9 является представление системных ресурсов и служб в виде файлов в иерархии каталогов. Она идет от Unix и еще лучше разработана в Linux, но Plan 9 заходит дальше всех. Файлами выглядят не только устройства, но и такие объекты, как серверы имен Internet.

Если вы посмотрите в каталог /dev, то увидите знакомые имена. К примеру, попробуйте выполнить

cat /dev/time

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

cat /dev/snarf

Вы заметите, что файлы типа cons и mouse появляются по несколько раз, это происходит из-за того что /dev является союзным каталогом и в нем присутствуют многочисленные совпадения одинаковых файлов. Первый /dev/mouse имеет отношение к текущему окну, следующий — к включаемому окну (вероятно, это весь экран). Введите

cat /dev/mouse

а затем попробуйте передвигать мышь внутри и вне текущего окна.

Окружение оболочки хранится в каталоге под названием /env; каждая переменная окружения хранится в файле. К примеру, введите

cat /dev/font

Запущенные процессы находятся в /proc; каждый процесс представляет собой каталог, а каждый файл такого каталога доступен процессу. Например, файл status содержит текстовую информацию о статусе процесса. Введите

awk '{print $1}' /proc/*/status

чтобы получить список запущенных процессов.

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

И наконец, стоит заглянуть в каталог /sys, который является стандартной файловой системой, он содержит каталоги исходных текстов программ, библиотек и заголовков, man-страницы, документацию и тому подобное. Он приблизительно эквивалентен аналогичным каталогам Unix систем.

Шрифты Править

Один аспект 8½, который вы можете изменить, — это шрифт отображения текста. В системе существует шрифт по-умолчанию, но обычно переменная font устанавливается явно в профиле:

font = /lib/font/bit/pelm/euro.9.font
8½ -f $font

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

Plan 9 использует символьный набор Unicode, который позволяет системе и ряду программ комфортабельно работать с очень большим символьным набором. (Сравните 16 bit символов и 64 KB.) Так что если вы желаете редактировать файлы с языками, в которых используется больше символов, чем может позволить ASCII, или запускать grep или awk для них, тогда Unicode — это то, что вам нужно. У вас могут возникнуть проблемы при печати таких символов на стандартных принтерах, но на экране они выглядят отменно.

Редактирование Править

Стандартный текстовый редактор Plan 9 называется sam, его характеристики: хорош при редактировании нескольких файлов; обеспечивает синтаксис регулярных выражений, схожий с таковым в ed (который, к слову, также в наличии); возможность копирования и вставки текста между окнами 8½. Мышиные идиомы sam и 8½ одинаковые. Если есть сетевое соединение, он может редактировать файлы на других системах.

Между прочим, регулярные выражения в Plan 9 были приведены в порядок — все программы кроме rc поддерживают одинаковые регулярные выражения, которые достаточно близки к таковым в egrep Unix систем.

CPU сервер Править

В мире Plan 9 интерактивные программы вроде редакторов запускаются на терминале, а вычислительные программы вроде компиляторов — на CPU сервере, который работает быстрее и имеет более высокую полосу пропускания к файловому серверу. Команда cpu соединяет вас с CPU сервером и ваши вычисления выполняются быстрее, при этом все остальное остается без изменений. Удаленный вход в систему (не сохраняющий пространство имен, с которым вы работаете) и доступ к сетевой файловой системе (не изменяющий процессор) достаточно сильно отличаются. Строка

bind -b /mnt/term/mnt/8½ /dev в профиле производит наследование CPU сервером всех ваших устройств (включая мышь, клавиатуру и экран), ассоциированных с вашим терминалом, так что они продолжают работать в окне CPU.

Соединение с Unix системами Править

Вероятно ваша система Plan 9 будет соединена какой-нибудь сетью с Unix системой (или системами). Команда con соединяет Plan 9 с другой системой (типично это Unix); команда rx предназначена для выполнения одной команды на другой машине (нечто вроде rsh в Unix).

Если вы взаимодействуете с Unix системой, есть возможность подмонтировать ее файловую систему в пространство имен Plan 9, таким образом файлы Unix стороны станут доступными в Plan 9. Команда

9fs машина устанавливает соединение и монтирует файлы; после ее выполнения корневая файловая система объекта будет находится в каталоге /n/машина.

CPU серверы Plan 9 отвечают на запросы FTP, rlogin и telnet. Если вы желаете установить свои собственные привилегии доступа, тогда вам необходимо отвечать на вызовы, используя ключ SecureNet или эквивалентный ему; в противном случае, пользователь none получит большие привилегии, достаточные для доступа ко многим доступным глобально серверам и базам данных (см. раздел 7 руководства). Подобные ограничения присутствуют и когда вы получаете доступ к файловым серверам Plan 9 через NFS; в этом случае программа 9auth будет вести диалог вызов/ответ.

Если ваша система Plan 9 делит диск с MS-DOS, что возможно для архитектуры PC, то вы можете получить доступ к файловой системе DOS через каталог /n/c:, и другим дискам через /n/a:, и т.п. Это удобный способ получения информации в или из мира PC.

Резервирование и восстановление Править

Обычно состояние файловой системы Plan 9 подлежит записи каждый день (или около того); в нашей системе, оно сохраняется на оптическом диске. Если ваша система должным образом оснащена, то у вас есть возможность запуска другого сервиса, который делал бы доступным прошлое состояние файловой системы (только для чтения). К примеру, если вы дадите команду

9fs dump

то она подмонтирует эту файловую систему в каталог /n/dump. Таким образом, вы можете вернуться (командой cd) в прошлое:

cd /n/dump/1995/0401/usr/вы
ls -l

При этом вы переместитесь в ваш домашний каталог, каким он был 1 апреля 1995 года. Это файловая система настоящая, так что все обычные команды работают нормально; вы можете сравнивать (команда diff) файлы, копировать старые версии в настоящее. В Plan 9 нет программ ни резервирования, ни восстановления, механизм взятия дампов включает и полностью заменяет их.

Программирование в Plan 9 Править

В основном программирование в Plan 9 выполняется по стандарту ANSI C с поддержкой обычных инструментальных средств типа YACC. Программа make была полностью вытеснена mk, и, также как с оболочкой, требуется время, чтобы привыкнуть к ней.

Для каждого поддерживаемого типа процессора существует компилятор C (в названии используется одна буквенная мнемоника), а также версия, которая может выполняться на любом типе процессора. Mkfile нормально скрывает эти данные, каталог /sys/src/cmd содержит примеры, которые вы легко можете адаптировать.

Хотя существует поддержка ANSI C, библиотеки Plan 9 написаны не на нем и стандартные заголовочные файлы ANSI отсутствуют в системе. Компиляция программ в Plan 9 очень отличается от таковой в Unix, так что перед началом этой процедуры обязательно прочитайте документ «Как использовать компилятор Plan 9 C» (How to Use the Plan 9 C Compiler, /sys/doc/comp.ps).

Если вам нужно импортировать или экспортировать программу на языке C, то вам придется использовать среду ANSI/POSIX («APE»), которая и предназначена для этих целей. Она включает полный набор POSIX-совместимых библиотек и некоторые инструментальные средства POSIX. Драйвер компилятора называется pcc. Команда

ape/psh связывает нужные файлы и запускает POSIX-совместимую оболочку.

Хотя эти средства POSIX и полезны для обмена программ с внешним миром, чтобы быть более продуктивными используйте (по возможности) исконные инструментальные средства Plan 9.

Выводы Править

Plan 9 это не Unix. Если вы думаете что это Unix, то часто будете удивляться (с отвисшей челюстью и широко открытыми удивленными глазами — прим пер.), потому что какие-то вещи здесь не доступны или работают совсем по-другому. Если же вы будете думать о ней как о новой операционной системе, то поймете, что многое работает очень гладко, и здесь есть поистине хорошие идеи, которые стоит использовать.

Copyright © 1995 Lucent Technologies. All rights reserved. Copyright © 2003

Перевод Андрей С. Кухар.

Обнаружено использование расширения AdBlock.


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

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

Также на Фэндоме

Случайная вики