каталога. Вы можете определить это имя командой 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 сортирует
строки файла в соответствии с последовательностью
ASCII, т. е. в алфавитном порядке.

Например, чтобы отсортировать файл с именем phonelist,
введите:

sort phonelist

В вышеприведенном примере отсортированное содержимое
файла будет выводиться на экран. Для создания отсорти-
рованной версии phonelist с именем phonesort, введите:

sort phonelist > phonesort

Заметьте, что sort полезна для сортировки вывода других
команд. Например, чтобы отсортировать вывод команды
who, введите:

who | sort >whosort

Эта команда берет вывод who, сортирует его и пересылает
отсортированный вывод в файл whosort.

У команды sort существует большое количество ключей.
Подробное описание см. в разделе sort(C) в Справочном
руководстве XENIX.

4.9.4. Поиск образца в файле

Команда grep выбирает и выводит только те строки, кото-
рые соответствуют заданному образцу. Например, чтобы
вывести все строки файла, содержащие слово "tty38",
введите:

grep 'tty38' file

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

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


- 45 -

использовать команду grep, чтобы найти телефон человека
с именем Joe, чей номер начинается с цифр 822. Для
этого введите следующую команду:

grep 'Joe' phonelist | grep '822-' >joes.number

grep найдет все строки, содержащие слово "Joe". Затем
эти строки будут профильтрованы через другую команду
grep, котррая выберет строки, содержащие "822-" таким
образом отбросив всех других ненужных Joe. В конце кон-
цов, при условии, что в списке существует единственный
Joe, чей номер начинается с 822, его имя и телефон
будет записано в файле joes.number.

Для получения дополнительной информации о команде grep,
а также о "родственниках" этой команды fgrep и egrep, о
типах образцов, которые можно искать (они называются
"регулярные выражения"), смотри раздел grep(C) в Спра-
вочном руководстве XENIX.

4.9.5. Подсчет слов, строк и символов

wc - это программа для подсчета слов в файле. Буквы
'wc' обозначают word count (подсчет слов). Подразумева-
ется, что слова разделяются знаками пунктуации, пробе-
лами, табуляциями или символами новая строка. wc также
считает количество символов и строк; все три числа
выводятся по умолчанию.

Например, чтобы подсчитать число строк, слов и символов
в файле textfile, введите:

wc textfile

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

4432 18188 97808 textfile

Если вы хотите подсчитать только символы, слова или
строки, вы должны использовать соответствующие мнемони-
ческие ключи.

В качестве иллюстрации посмотрите внимательно на следу-
ющие три команды и их вывод:

wc -c textfile
97808 textfile
wc -w textfile
18188 textfile
wc -l textfile
4432 textfile



- 46 -

Первый пример выводит число символов в textfile, второй
выводит число слов, а третий число строк.

4.9.6. Установка времени выполнения команды

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

Команда at принимает стандартный ввод и имеет следующий
формат:

cat файл | at время день

файл - это имя файла, содержащего команду или команды
для выполнения. время - это время дня, заданное циф-
рами, за которыми следует "am" или "pm", что обозна-
чает, соответственно, до полудня или после полудня.
Число, заданное одной или двумя цифрами, воспринимается
как часы, тремя или четыремя - как часы и минуты. Более
четырех цифр не воспринимается.

день необязателен. Это либо имя месяца, за которым сле-
дует номер дня, либо день недели. Если день не задан,
команда выполнится сегодня.

Например, если вы захотите определить, какие процессы
будут работать в системе в десять часов вечера, во
вторник, поместите следующую строку в файл с именем
use:

ps -a > /usr/myname/use

(Как создавать файлы и записывать в них текст, описано
в главе 4 "vi: текстовый редактор" в Руководстве поль-
зователя XENIX).

После того, как вы создали такой файл, введите:

cat use | at 10pm tues

Нажмите RETURN. Появиться приглашение системы XENIX и
вы можете продолжать работать. В десять часов вечера,
во вторник, система XENIX выполнит команду ps -a и
поместит вывод в файл use. Выход из системы на команду
at не влияет.

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


- 47 -

- Идентификатор файла.

- Команда, вызывающая этот файл (at или batch).

- Дату и время, когда должен быть выполнен файл.

Чтобы отменить выполнение команды, сначала просмотрите
список файлов для выполнения и запомните его идентифи-
катор. Затем используйте команду at -r для удаления
файла или файлов из списка.

Команда at -r имеет следующий формат:

at -r число

Например:

at -r 504510300.a

удалит файл с номером 504510300.a, отменив все команды,
которые содержались в нем. Пользователь может удалять
только свои собственные файлы.

4.10. Управление процессами

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

4.10.1. Запуск процесса в фоновом режиме

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

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


- 48 -

wc file1 file2 file3 >count&

Вывод будет собран в файле count. Если вывод не напра-
вить в файл, он будет появляться на экране в непредска-
зуемые моменты во время вашей работы.

Когда процесс запускается в фоновом режиме, вы теряете
над ним контроль во время выполнения. Например, введя
INTERRUPT, вы не остановите фоновый процесс. Вместо
этого вы должны использовать команду kill, описанную в
следующем разделе.

4.10.2. Как остановить процесс

Чтобы остановить выполнение основного процесса, нажмите
на вашем терминале клавишу INTERRUPT. Это остановит
любую команду, работующую в основном режиме. Для того,
чтобы остановить все ваши процессы, работающие в фоно-
вом режиме, введите:

kill 0

Чтобы остановить какой-то конкретный фоновый процесс,
сначала введите:

ps

Команда ps выводит идентификаторы (PID) всех ваших
существующих процессов. Например:

PID TTY TIME CMD
3459 03 0:15 -sh
4831 03 1:52 cc program.s
5185 03 0:00 ps

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

kill 4831

где 4831 - это идентификатор процесса, который вы
хотите остановить.
_______________________________________________________

Замечание

Остановка процесса, связанного с редактором vi,
может ввести терминал в странный режим работы.
Кроме того, временные файлы, котрые обычно созда-
ются во время запуска команды и удаляются после
окончания ее работы, могут остаться после выполне-
ния команды kill. Временные файлы обычно нахо-
дятся в каталоге /tmp. Этот каталог следует перио-
дически проверять и удалять старые файлы.


- 49 -

__________________________________________________


4.11. Получение информации о статусе

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

4.11.1. Кто работает в системе

Команда who выводит имена, номера терминалов и время
входа в систему пользователей, работающих на данный
момент в системе. Например, введите:

who

Эта команда выведет на экран терминала что-то подобное
следующему:

arnold tty02 Apr 7 10:20
daphne tty21 Apr 7 07:47
eliot tty23 Apr 7 14:21
elen tty35 Apr 7 08:36
gus tty26 Apr 7 09:55
adrian tty28 Apr 7 14:21


Команда finger выводит более подробную информацию,
такую, как номера телефонов организаций и добавочные
телефонные номера. Для получения дополнительной инфор-
мации об использовании этой команды, смотри finger(C) в
Справочном руководстве XENIX.

4.11.2. Какие процессы выполняются

Так как команды могут быть запущены в фоновом режиме,
не всегда очевидно, какие процессы были запущены вами.
Команда ps означает "process status" (статус процесса)
и выводит информацию о текущих процессах, связанных с
вашим терминалом. Например, вывод команды ps может выг-
лядеть следующим образом:

PID TTY TIME CMD
10308 38 1:36 ed chap02.man
49 38 0:29 -sh
11267 38 0:00 ps

Столбец PID содержит уникальный идентификатор процесса,


- 50 -

который может быть использован для остановки какого-
нибудь конкретного процесса. Столбец TTY содержит тер-
минал, с которым связан процесс. Столбец TIME содержит
общее время выполнения процесса. Процесс может быть
остановлен командой kill. Для получения информации об
использовании этой команды, смотри раздел 4.10.2 "Как
остановить процесс".

Для того, чтобы определить все процессы, работающие в
системе, используйте ключ -a:

ps -a

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

ps -t13

Для получения дополнительной информации о команде ps и
ее ключах, смотри ps(C) в Справочном руководстве XENIX.

4.11.3. Получение информации о принтере

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

Чтобы выяснить, в каком состоянии находится отдельный
файл (его статус), вам нужно знать идентификатор зап-
роса на печать. Когда вы делаете запросы на печать с
помощью команды lp, то идентификатор запроса выводится
на экран. Он имеет вид:

принтер-идентификационный_номер

принтер - это имя принтера, на котором будет печататься
ваш файл (узнайте у администратора системы, какие прин-
теры вам доступны), а идентификационный_номер представ-
ляет собой уникальное число, идентифицирующее ваш файл.

Чтобы узнать состояние конкретного файла, введите:

lpstat идентификатор_запроса

lpstat в ответ выведет дату и время, когда был сделан
запрос на печать, и сколько символов осталось напеча-
тать.

Чтобы выяснить, в каком состоянии находятся все ваши
файлы, ожидающие печати на принтерах, введите:


- 51 -

lpstat

lpstat в ответ выведет идентификаторы запросов и инфор-
мацию о состоянии всех ваших файлов.

Вы можете узнать, какие файлы ожидают печати на данном
принтере, использовав lpstat с ключом -p. Эта команда
имеет следующий формат:

lpstat -p принтер

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

Подробно lpstat и его ключи описываются в Справочном
руководстве XENIX в разделе lpstat(C).

4.12. Как пользоваться принтером

Команды XENIX, управляющие принтерами, легки в исполь-
зовании и предоставляют вам большое количество вариан-
тов при печати файла. С помощью нескольких простых
команд вы можете сделать несколько копий файла, отме-
нить запрос на печать или установить специальный ключ
для конкретного принтера. Так как система принтеров
XENIX разработана таким образом, чтобы ее можно было
легко настраивать на работу с различным окружением, то
узнайте у вашего администратора системы, какие принтеры
и ключи вам доступны.

4.12.1. Печать файлов: lp

Чтобы распечатать копии ваших файлов, вы можете вос-
пользоваться либо командой lp, либо командой lpr. Эти