Руководство по ОС UNIX
НПКО Мекомп при ММ СССР
UNIX SystemяV
Operating System
Руководство по ОС UNIX
( UNIX Tutorial )
Информация, содержащаяся в этом документе, может быть под-
вергнута изменениям без предупреждения и не представляет собой
обязательств со стороны The Santa Cruz Operation, Inc, а также
Microsoft Corporation. Программное обеспечение, описанное в этом
документе, поставляется по соглашению о лицензии, или же по сог-
лашению о нераспространении. Программное обеспечение может ис-
пользоваться или копироваться только в соответствии с пунктами
соглашения. Незаконным является копирование программного обеспе-
чения на магнитную ленту, диск или какой-либо другой носитель с
целями, отличными от собственных нужд покупателя.
Portions 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987,
1988 Microsoft Corporation.
All rights reserved.
Portions 1983, 1984, 1985, 1986, 1987, 1988 The Santa
Cruz Operation, Inc.
All rights reserved.
Всякое использование, дублирование или любое другое расп-
ространение правительством будет подвергнуто следующим
ограничениям: подоглавления (b) (3) (ii) для ограничения прав на
компьютерное программное обеспечение , и подоглавления (b) (2)
для ограничения прав на технические данные; и то, и другое см.
52.227-7013.
Microsoft, MS-DOS и XENIX являются торговыми марками
Microsoft Corporation.
UNIX является торговой маркой AT&T Bell Laboratories.
SCO номер документа: XG-5-16-88-5.0
.
Содержание.________________________________________________________1. Введение
1.1 Введение 1-1
1.2 Об этом руководстве 1-1
1.3 Способы обозначений 1-2
2. Основные концепции
2.1 Введение 2-1
2.2 Бюджет 2-1
2.3 Файлы 2-2
2.4 Способы именований 2-6
2.5 Команды 2-10
2.6 Ввод и вывод 2-13
3. Регистрация в системе
3.1 Введение 3-1
3.2 Получение доступа к системе 3-1
3.3 Обеспечение безопасности ваших ресурсов 3-5
3.4 Изменение типа вашего терминала 3-6
3.5 Ввод команд 3-7
4. Работа с файлами и каталогами
4.1 Введение 4-1
4.2 Работа с каталогами 4-1
4.3 Редактирование файлов с помощью редактора vi 4-7
4.4 Распечатка файлов 4-10
4.5 Работа с файлами 4-13
4.6 Обработка текстовых файлов 4-20
4.7 Использование режимов доступа к файлам и каталогам 4-23
5. Сопровождение системы
5.1 Введение 5-1
5.2 Создание резервных копий 5-1
5.3 Копирование дискет 5-9
5.4 Извлечение информации о статусе системы 5-10
5.5 Управление процессами 5-12
5.6 Программирование на языке Shell 5-17
.
6 Утилиты непосредственного взаимодействия UNIX
6.1 Введение 6-1
6.2 Использование системных часов и календаря 6-1
6.3 Почтовые услуги 6-2
6.4 Автоматические напоминания системы 6-7
6.5 Использование системного калькулятора 6-8
.
Ч А С Т Ь 1.В в е д е н и е_______________________________________________________
1.1 Введение 1-1
1.2 Об этом руководстве 1-1
1.3 Способы обозначений 1-2
.
1-1
1.1 Введение
Это руководство является введением в операционную систему
UNIX. Оно предназначено для пользователей, слабо или совсем не
знакомых с UNIX или XENIX.
ОС UNIX состоит из двух сотен команд и программ. Данный
самоучитель не дает разъяснений, как пользоваться всеми двумяс-
тами. Однако, здесь вы найдете описания наиболее часто использу-
емых и наиболее важных команд и программ.
Цель данного руководства состоит в том, чтобы как возможно
быстро научить вас практической работе в ОС UNIX. Для этого,
как мы считаем, нет необходимости обеспечивать вас всей полнотой
информации об ОС UNIX. Если вам все же нужно знать все, обрати-
тесь к UNIX User's Reference и к UNIX User's Guide.
1.1 Об этом руководстве
Данное руководство составлено следующим образом:
. Часть 1, "Введение", содержит общий обзор и показывает,
как пользоваться самоучителем.
. Часть 2, "Основные концепции", объяснит те принципы,
знание которых повысит эффективность вашей работы в сре-
де UNIX. Части, следующие после второй, предполагают
знание данной части.
. Часть 3, "Вход в систему", объясняет, как войти в сис-
тему, как защитить ваши записи, как редактировать
подсказки системы, а также как вводить команды UNIX.
. Часть 4, "Работа с файлами и каталогами", описывает,
как выполнять основные задачи, включающие работу с
файлами и каталогами. Здесь вы узнаете, как созда-
вать файлы и каталоги, как перемещать, копировать,
уничтожать и переименовывать файлы и каталоги. Также
эта глава дает пояснения, как использовать различные
утилиты текстового процессора UNIX, и как организовать
доступ к файлам и каталогам.
.
1-2
. Часть 5, "Сопровождение системы", объясняет, как поль-
зоваться служебными утилитами UNIX. Показано, как соз-
давать резервные копии, как копировать дискеты, как
узнать информацию о статусе системы и как устанавливать
фоновый режим выполнения команд. Также в пятой части
содержится обсуждение стиля программирования в ОС UNIX.
. Часть 6, "Утилиты непосредственного взаимодействия
UNIX", рассказывает об использовании утилит типа "рабо-
чий стол" UNIX: об автоматических напоминаниях и под-
сказках системы, о связи с другими пользователями и об
использовании системных вычислений.
Вы наилучшим образом используете данное руководство, если
начнете с чтения части 2. Прочтя ее, вы получите информацию, не-
обходимую для понимания последующих глав. Затем вы можете про-
честь части с 3 по 6, одновременно в качестве упражнений выпол-
няя на вашем компъютере примеры, описанные в тексте.
Все главки каждой части являются самостоятельными единицами
информации. Необязательно читать предыдущие главки для понимания
материала, изложенного в последующих. Для того, чтобы знать, как
выполнять специальные задачи, такие, например, как распечатка
текстового файла, если вы знаете, как его создать, обратитесь к
соответствующей главке. В данном случае это будет 4.4 в части 4.
Для того, чтобы понять 4.4, вам не обязательно читать главки 4.1
- 4.3.
1.3 Способы обозначений
В данном руководстве приняты следующие соглашения о спосо-
бах обозначений:
. Примеры, приведенные в тексте, реальные.
. Команды, которые вы будете вводить, напечатаны жирнымшрифтом.
. Клавиши, которые нужно нажимать, напечатаны жирным шриф-том. Например, клавиша Return представлена как
RETURN.
.
1-3
. Комбинации клавиш выделены жирным шрифтом и печатаются
через дефис. Например:
Ctrl-d.
Чтобы выполнить команду, представленную комбинацией
клавиш, нажмите первую клавишу, и, не отпуская ее,
нажмите следующую. В данном примере нажмите клавиши
Control и d.
. Заглавные буквы в круглых скобках часто употребляются
в названиях команд, например:
touch(C)
О буквах в круглых скобках можно прочесть в UNIX
User's Reference, где содержится полная информация о
командах.
.
ЧАСТЬ 2.Основные концепции.
___________________________________________________________
2.1 Введение 2-1
2.2 Бюджет 2-1
2.2.1 Бюджет пользователя 2-1
2.2.2 Бюджет привилегированного пользователя 2-2
2.3 Файлы 2-2
2.3.1 Обычные файлы 2-2
2.3.2 Файлы специальных устройств 2-3
2.3.3 Каталоги 2-3
2.3.4 Справочные структуры 2-4
2.4 Способы именований 2-6
2.4.1 Имена файлов 2-6
2.4.2 Маршруты 2-6
2.4.3 Имена шаблонов 2-7
2.4.4 Специальные символы 2-8
2.5 Команды 2-10
2.5.1 Командная строка 2-11
2.5.2 Синтаксис 2-12
2.6 Ввод и вывод 2-13
2.6.1 Переадресация 2-13
2.6.2 Каналы 2-14
.
2-1
2.1 Введение
Эта часть рассказывает об основных концепциях, которые не-
обходимо знать для эффективной работы в среде UNIX. После чте-
ния этой части вы будете понимать, как составляется бюджет поль-
зователя, каким образом организованы и именованы системные
каталоги и файлы, как вводить команды и как команды ввода-вывода
можно переадресовать. Важно прочесть эту часть перед чтением
последующих частей данного руководства.
2.2 Бюджет.2.2.1 Бюджет пользователя
Распределение ресурсов (бюджет) должно уже существовать к
тому моменту, как вы зарегистрируетесь в системе UNIX. Ваш бюд-
жет должен содержать следующие компоненты:
. Ваше регистрационное имя. Это то имя, по которому вы
будете известны системе. Это имя вам нужно ввести по
подсказке системы о регистрации.
. Ваш пароль. Каждый пользователь в целях повышения безо-
пасности системы и своих записей может иметь пароль.
Этот пароль вводится во время регистрации в системе.
. Идентификатор вашей группы. Каждый пользователь извес-
тен системе как индивидуальный пользователь и как член
группы. Групповое участие - важный способ повышения
надежности системы. В качестве члена группы вы получа-
ете доступ к тем файлам и каталогам, к которым не име-
ет доступа индивидуальный пользователь.
. Ваш "начальный каталог". Это - место в файловой систе-
ме, где вы можете хранить ваши собственные файлы. При
первой регистрации в системе вы должны указать свой
начальный каталог.
. Вашу "регистрационную оболочку". Эта программа считыва-
ет и выполняет вводимые вами команды UNIX. В
большинстве случаев вашей регистрационной оболочкой
будет Bourne Shell, которая выдает в качестве подсказ-
ки знак доллара ($). Однако, может быть использована
конфигурация с оболочкой C-Shell со знаком процентов
(%) в подсказке, или Visual Shell, являющаяся интер-
фейсом меню-устройства. Во всем данном руководстве под
выражением "подсказка UNIX", или "приглашение UNIX",
подразумевается знак доллара или знак процентов.
.
2-2
Как только все эти сведения будут установлены, вы получите
возможность манипулировать файлами, каталогами и командами ОС
UNIX.
2.2.2 Бюджет привилегированного пользователя
Кроме бюджета индивидуального пользователя, каждая система
UNIX имеет бюджет "привилегированного пользователя". (Привиле-
гированный пользователь называется также "корневым"). Админист-
ратор системы должен зарегистрировать привилегированного пользо-
вателя в порядке выполнения своих административных задач.
Привилегированный пользователь имеет свободный доступ к управле-
нию всей системой. Привилегированный пользователь может прочесть
и отредактировать любой файл системы, выполнить любую программу.
2.3 Файлы
Файл - основная единица в файловой системе UNIX. Файлы в
UNIX делятся на три различных типа: обычные файлы (то, что мы
имеем в виду, говоря слово "файл"), файлы специальных устройств
и каталоги. Каждый из этих типов описан в главках, следующих ни-
же.
2.3.1 Обычные файлы
Обычный файл состоит из набора восьмибитовых единиц -
байтов. Обычный файл - это, как правило, либо текстовый доку-
мент, либо исходная запись программы, либо данные для програм-
мы. Выполнимые файлы в двоичном коде, или компьютерные прог-
раммы, тоже могут быть рассмотрены как обычные файлы. В
обычном файле байт интерпретируется программой-обработчиком
как текстовый символ, двоичная запись команды или выражения
программы.
Каждый обычный файл имеет следующие атрибуты:
. имя файла, не обязательно уникальное;
. уникальный номер в файловой системе, называемый число-
вым дескриптором;
. размер в байтах;
. время последнего внесения изменений;
. установленный способ доступа;
. пользователь (владелец) файла и группа.
.
2-3
Защита файлов
В многопользовательских системах часто появляется необхо-
димость "защиты" определенных файлов, ограничения доступа не-
которых пользователей к файлам в то время, когда к ним открыт
доступ других. Файлы защищаются тем, что пользователям назна-
чается "режим доступа". UNIX поддерживает три режима доступа:
чтение Если доступ только по чтению, то пользова-
тель с содержанием файла с помощью команд
cat и more. Пользователь, имеющий режим
доступа только по чтению, не может вносить
в файл изменения.
запись Пользователь, имеющий режим доступа по за-
писи, имеет право редактировать файл.
выполнение Если файл является программой, то пользо-
ватель, имеющий режим доступа по выполне-
нию, может выполнить эту программу. Вам не
удастся выполнить эту программу, если вы
не имеете данного режима доступа.
Режим доступа назначается владельцем файла. (Владельцем
файла является его создатель). Режим доступа может комбиниро-
ваться из трех, описанных выше. Это позволяет владельцу файла
определять, кто из пользователей может читать, записывать в
или/и выполнять файл. Заметим, что привилегированный пользова-
тель имеет доступ по чтению, записи и выполнению для любого
файла системы.
Механизм, обеспечивающий безопасность файлов, в UNIX дос-
таточно гибок. Он позволяет назначать различные способы доступа
для файлов владельца, файлов группы и других пользователей.
Обычно владелец файла имеет доступ по чтению и записи, члены
группы - только по чтению, другие пользователи не имеют доступа.
2.3.2 Файлы специальных устройств.
Каждому физическому устройству в системе, будь то твердый
или флоппи-диск, строчный принтер, терминалы или системная па-
мять, поставлены в соответствие так называемые "специальные
файлы". Эти файлы называются также файлами специальных уст-
ройств. Данное руководство не описывает эти файлы. Интересую-
щиеся могут обратиться к UNIX Administrator's Guide.
2.3.3 Справочные файлы или каталоги.
Справочные файлы - это, скорее, картотеки, чем файлы. Это
места, где размещены файлы (концептуально, а не физически).
Часто справочные файлы называют также "каталогами".
.
2-4
Каталог содержит имена и числовые дескрипторы файлов. Чис-
ловые дескрипторы входят в простую систему числовых дескриптров,
использующуюся в UNIX для организации файловой системы. Система
числовых дескрипторов входит в единый файл параметров, содержа-
щий информацию о файлах: о типе файлов, о числе связей с ними, о
размещении файлов на диске, о размерах файлов, об имени владель-
ца или группы, о режимах доступа к файлам и о времени последней
модификации.
Также как и обычные файлы, каталоги могут быть защищены
назначением режимов доступа. Доступом может быть разрешение на
чтение, на запись и на выполнение. Чтобы сделать что-нибудь по-
лезное в данном каталоге, пользователь должен иметь режим досту-
па "по выполнению" относительно данного каталога. Чтобы добавить
файл или исключить его из данного каталога, необходимо иметь ре-
жим доступа "запись" и "выполнение". Чтобы просмотреть содержа-
ние данного каталога, нужно иметь режим доступа "чтение" и "вы-
полнение". Режим доступа к каталогу назначается его владельцем.
Если нет владельца как такового, то им считается создатель ката-
лога.
2.3.4 Структура каталога.
При многопользовательской работе с большим количеством фай-
лов возникает необходимость в создании особого механизма быстро-
го просмотра файловой системы. Особенностью системы UNIX явля-
ется "инвертированная древовидная структура" каталога,
позволяющая эффективно организовать большое количество файлов.
Связанные файлы могут быть сгруппированы вместе в отдельном ка-
талоге. Наряду с обычными файлами, каталоги могут содержать дру-
гие каталоги, называемые иногда "подкаталогами". В свою очередь,
подкаталоги могут содержать как обычные файлы, так и новые под-
каталоги, и т.д. Команда cd служит для перехода из одного ката-
лога в другой. Типичным деревом файлов является приведенный ниже
пример, где "корень" (root) располагается сверху, а "ветви" де-
рева растут вниз. Катлоги являются "узлами" дерева, а обычные
файлы - "листьями". На рисунке 2-1 изображена инвертированная
древовидная структура каталога:
/ root
_________________|___________________
| | |
bin usr dev
| __________|__________ |
| | | |
chmod gwenl markt ttyla
__|______ _______|__
| | | |
mail news text data
Рис. 2-1 Типичная файловая система
.
2-5
На рисунке 2-1 имена bin, usr, dev, gwenl и markt являются
названиями каталогов, и все они представляют собой узлы дерева.
В вершине дерева находится корневой каталог, который представлен
знаком слэш (/). Имена mail, news, text и data представляют
обычные файлы, на рисунке это - "листья" дерева. Файл chmod яв-
ляется именем команды, которая может быть выполнена. Идентифика-
тор ttyla - имя файла специального устройства. Он представляет
терминал и также содержится в древовидной структуре.
Если каталог содержит идущие вниз ветви, представляющие
другие файлы или каталоги, то такие файлы и каталоги называются
"содержащимися" в данном каталоге. На рис. 2-1 файлы mail и news
содержатся в каталоге gwenl, который, в свою очередь, содержится
в каталоге usr. А каталог usr содержится в корневом каталоге.
Любому файлу в системе можно дать имя, начиная от корня и
двигаясь по какой-либо ветви до желаемого файла. ФайлБ которому
дается имя. соотносится с каким-либо каталогом. Соглашения о
способах именований в UNIX обсуждается ниже.
Каталог пользователя.
Каждый пользователь в системе UNIX имеет персональный, или
"начальный", каталог. Это то место, где вы можете сохранять свои
файлы, и где другим пользователям делать нечего. Наряду с на-
чальным каталогом, могут существовать и другие подкаталоги, где
присутствуют ваши собственные записи и осуществляется ваше уп-
равление. Обычно начальные каталоги пользователей системы UNIX
располагаются в каталоге с именем usr, что проиллюстрировано ри-
сунком 2-2.
usr
______________|______________
| | |
adam eve mary
| ________|________ |
| | | |
text text temp text
Рис. 2-2. Типичный каталог пользователя
На рисунке 2-2 показано, что каталог usr содержит начальные
каталоги каждого пользователя. В данной системе три пользовате-
ля: adam, eve и mary.
.
2-6
2.4 Способы именований.
Каждому файлу, каталогу и устройству в UNIX поставлены в
соответствие имя файла и маршрут. Об этом - две следующие ниже
главки.
2.4.1 Имена файлов.
Имя файла - последовательность, содержащая от 1 до 14 сим-
волов, которыми могут быть буквы, цифры и некоторые специальные
символы, такие, например, как подчеркивание (_). Каждый отдель-
ный файл, каталог и устройство в системе имеет имя. Хотя можно
использовать почти любые символы в имени файла, лучше ограни-
читься алфавитно-цифровым набором символов и точкой. Остальные
символы, в особенности символы управления, не стоит употреблять
для этой цели.
Имена файлов должны как-то отражать их содержание. Напри-
мер, файл, содержащий список необходимых покупок, скорее должен
иметь имя покупки, а не file1. Заметим, что имя файла должно
быть уникально только в пределах данного каталога, но совсем не
обязательно во всей системе. Различные каталоги могут содержать
разные файлы с одинаковыми именами. Например, различные файлы
могут иметь одинаковое имя text, если они находятся в разных ка-
талогах. (См. рис. 2-2).
Когда имя файла начинается с точки, то сам файл является
"скрытым", и его имя не отображается на дисплее по команде lc.
Часто файлы системной конфигурации (System configuration files)
являются скрытыми. Команды lc -a не выводят имена скрытых фай-
лов. Тире (-) используется в специальных опциях команд, и его
следует избегать в именах файлов. Наконец, никогда не должны ис-
пользоваться в именах файлов знак вопроса (?), звездочка (*),
скобки ([ и ]) и другие разделители, так как они имеют свое тол-
кование в среде UNIX. (Более подробную информацию об этих сим-
волах можно получить из главки "Специальные символы", ниже в
этой части).
2.4.2 Маршруты.
Маршрут - это последовательность имен каталогов, представ-
ляющий собой путь в файловой системе к данному файлу, где каждое
следующее имя отделяется от предыдущего наклонной чертой - слэ-
шем. Если название маршрута начинается со слэша, то путь в иско-
мый файл начинается от корневого каталога всего дерева системы.
В обратном случае, если название маршрута начинается непосредс-
твенно с имени файла, то путь к искомому файлу должен начаться
от текущего каталога (рабочего каталога). Введя команду pwd,
можно узнать имя текущего каталога.
.
2-7
Маршрут, название которого начинается со слэша, называется
полным или абсолютным. Абсолютный маршрут - указание полного пу-
ти к месту расположения файла в системе. Абсолютный маршрут уни-
кален: не существует двух таких файлов, каталогов или устройств,
пути к которым в точности совпадают. Маршрут, название которого
начинается не со слэша, является относительным, так как он ука-
зывает путь от текущего каталога.
2.4.3 Имена шаблонов.
Общеупотребимыми в UNIX являются следующие имена файлов и
каталогов:
/ Имя корневого каталога.
/bin Каталог, содержащий большинство наибо-
лее часто используемых команд UNIX.
/usr Каталог, содержащий все каталоги поль-
зователей. В подкаталоге /usr/bin со-
держатся те наиболее часто используемые
команды UNIX, которые не вошли в /bin.
/dev Каталог, содержащий файлы специальных
устройств.
/dev/console Файл специального устройства - систем-
ной консоли.
/dev/ttyXX Имена файлов специальных устройств -
системных портов. XX представляет собой
номер, например, la или 006. Большинс-
тво портов - терминалы.
/lib Каталог, содержащий "библиотечные" фай-
лы, используемые для системного разви-
тия.
/usr/lib Каталог, содержащий приложения UNIX.
/tmp Каталог, содержащий временные файлы.
/usr/joe/run Типичный пример полного маршрута. Это
путь к файлу run, которым владеет поль-
зователь по имени joe.
.
2-8
bin/skript Относительный маршрут. Путь к файлу
skript подкаталога bin от текущего ка-
талога. Если текущим является корневой
каталог (/), то имя пути будет
/bin/skript. Если текущий каталог
/usr/joe, то имя пути
/usr/joe/bin/skript.
file1 Имя обычного файла в текущем каталоге.
Все файлы и каталоги, за исключением корневого, имеют "ро-
дительский" каталог. Этот каталог расположен "непосредственно
выше" данного каталога или файла в дереве файловой системы. Фай-
ловая система UNIX поддерживает специальную стенографическую
нотацию для родительского и текущего каталогов:
. Стенографическое имя текущего каталога. Например,
./filexxx имеет имя filexxx файла, расположеного в
текущем каталоге.
.. Стенографическое имя каталога, родительского по отно-
шению к текущему. Например, по имени ../.. мы обра-
тимся к каталогу, находящемуся на два уровня "выше"
текущего.
2.4.4 Специальные символы.
UNIX поддерживает возможность объединения наборов файлов
по специальным шаблонам. Представьте, к примеру, что вы работае-
те над большой книгой. Отдельные главы этой книги могут хранить-
ся в виде отдельных файлов, называющихся, например, chpt1,
chpt2, chpt3 и т. д. Вы также можете каждую главу разделить на
несколько частей в виде файлов, и иметь, таким образом, файлы
chpt1.1, chpt1.2, chpt1.3 и т.д.
Когда вы соберетесь напечатать всю книгу с помощью строчно-
го принтера, вы можете ввести следующую команду:
lp chpt1.1 chpt1.2 chpt1.3 ...
.
2-9
Вводя так много имен файлов в команде, вы быстро
утомитесь, и, скорее всего, наделаете ошибок. К счастью, есть
более короткая запись того же самого. Последовательность фай-
лов, имена которых содержат общие части - "шаблоны", может
быть записана компактно, когда различающиеся части записывают-
ся универсальными символами, играющими роль джокеров при игре
в карты. В этой части мы обсудим следующие универсальные сим-
волы:
* Соответствует нулю или более символов.
[] Соответствует какому-либо символу в скобках.
? Соответствует какому-либо одному символу.
Например, вы можете ввести:
lp chpt*
Звездочка означает "нуль или более символов произвольного
типа", и поэтому команда, приведенная выше, означает следующее:
"послать сообщения файлам, имена которых начинаются со слова
chpt, о выводе на печать". Этот быстрый и эффективный путь рас-
печатки всех файлов поможет закончить вашу книгу.
Такая сокращенная запись свойственна не только команде lp.
Она может быть использована и в любой другой команде. Например,
вы можете пролистать список имен файлов вашей книги с помощью
команды
lc chpt*
Универсальный символ * может располагаться не только в кон-
це имени. Он может заменять любую группу символов в любом месте
имени файла. По определению, звездочка может обозначать и все
имена файлов, не содержащих слэшей или начинающихся с точек:
cat *
Эта команда выведет все файлы текущего каталога на экран.
Звездочка - не единственный универсальный символ, позволяющий
группировать имена. Представьте, что вам нужно распечатать части
только с 1 по 4 и 9. Вы можете ввести:
lp chpt[12349]*
.
2-10
Скобки ([ ]) означают "соответствие одному из символов в
скобках". Если должно быть поставлено соответствие нескольким
символам, то это можно записать более коротко, с использованием
следующей команды:
lp chpt[1-49]*
(Заметим, что эта запись должна рассматриваться как после-
довательность с chpt1 по chpt4 и chpt9, а не как последователь-
ность с chpt1 по chpt49). В этом примере показано, что символы в
скобках могут записываться через тире: "[a-z]", что означает
"любой символ от а до z".
Знак вопроса (?) соответствует какому-либо одному символу:
lc ?
По этой команде будут выведены все файлы, имена которых
состоят из одного символа. Следующая команда выведет информацию
о первом файле из каждой главы (т.е. chpt1.1, chpt2.1, ...).
lc chpt*.1
Если вам понадобилось отключить специальное значение симво-
лов *, ?, [], то заключите их в одинарные кавычки. Например,
следующая команда распечатает только файлы с именем '?', а не
все файлы с односимвольными именами:
lc '?'
Шаблоны обсуждаются в части "Оболочка" руководства UNIX
User's Guide.
2.5 Команды
Вы уже немного знакомы с тремя полезными командами UNIX,
lc, lp и cat. Команда lc используется для вывода содержания ка-
талога, команда lp для распечатки файлов, команда cat - для вы-
вода содержимого файла.
Команды являются выполнимыми программами. Когда вы вводите
имя команды, UNIX пытается найти программу с таким именем и, в
случае удачи, выполнить ее. В командной строке могут содержаться
также аргументы и опции или файлы, если программе это необходи-
мо. Командная строка и ее синтаксис описаны в двух следующих
главках.
.
2-11
2.5.1 Командная строка.
Среда UNIX считывает строку символов, называемую "команд-
ной строкой", и воспринимает ее как команду. Далее оболочка оп-
ределяет, какие именно действия нужно выполнить. (Существует три
оболочки UNIX: Bourne Shell, C-Shell и Visual Shell). UNIX
считывает имя команды с командной строки, находит выполнимую
программу, связанную с именем этой команды, затем выполняет
программу. Когда завершится выполнение программы, среда UNIX
возобновляет чтение и анализ командной строки. Когда вы вводите
команду, фактически вы редактируете текстовую строку, называемую
"буфером командной строки". Буфер командной строки будет содер-
жать саму командную строку только после нажатия клавиши RETURN.
Изменение буфера командной строки осуществляется нажатием клавиш
BKSP и Ctrl-u. Если нажать клавишу INTERRUPT прежде RETURN, ко-
мандная строка, содержащаяся в буфере, будет стерта. (Большинс-
тво клавиатур используют клавишу DEL для обозначения INTERRUPT).
В одной командной строке может содержаться несколько ко-
манд, при этом они разделяются точкой с запятой. Например, сле-
дующая командная строка вызовет печать текущей даты и имени те-
кущего каталога:
date; pwd
Команды могут подчиняться "фоновому процессу", если в ко-
мандную строку добавить знак амперсанда (&). Эта модификация
нужна для выполнения "пакетных" процессов других систем. Основ-
ным преимуществом фонового выполнения команд является возмож-
ность одновременного выполнения других команд в приоритетном ре-
жиме. Например, следующая команда выводит статистику обращений к
диску в каталоге /usr, фактически расходующей время операции,
без постоянной связи с терминалом:
du /usr > diskuse &
Команда du будет выводить информацию в файл diskuse, когда
произошла переадресация выводного потока, на что указывает знак
" > ". (Переадресация ввода и вывода обсуждается в главе "Ввод и
вывод" ниже. Фоновые процессы описаны в главе "Задачи с развиты-
ми свойствами").
.
2-12
2.5.2 Синтаксис.
Общий синтаксис команды таков:
cmd [опции] [аргументы] [имена файлов] [...]
По определению, названия команд печатаются строчными буква-
ми.
Опции не являются обязательными атрибутами. От имени коман-
ды они отделяются через тире (-). Используются опции в качестве
модификаторов команд. Например, команда lc вызовет печать содер-
жания каталога в сжатом виде в несколько столбцов. Эта же коман-
да с опцией -l (lc -l) распечатает содержание каталога в расши-
ренном виде.
В некоторых случаях одна опция может представлять собой
комбинацию нескольких, как в следующей команде:
lc -rl
На самом деле в этой команде сгруппированы две опции, где
опция -rl одновременно позволяет распечатать содержание каталога
в обратном алфавитном порядке и в расширенном формате.
Иногда в одной команде могут присутствовать несколько оп-
ций, например:
copy -a -v начало конец
Здесь опция -а собщает команде copy о необходимости всякий
раз перед копированием файлов от начало до конец требовать от
пользователя подтверждения о копировании. Опция -v отличается
"многословием", заставляя распечатывать имена файлов после копи-
рования.
Покажем, в какой форме записываются аргументы в других ко-
мандах:
grep 'строка текста' data.file
В этом примере строка текста - единственный аргумент, и это
та строка, которую команда grep будет искать в файле data.file.
.
2-13
2.6 Ввод и вывод.
В минимальной конфигурации UNIX предполагает, что ввод
осуществляется с клавиатуры терминала, а вывод направляется на
экран терминала. Для иллюстрации типичной команды обмена введем:
cat
Теперь эта команда ждет ввода с вашей клавиатуры. Все стро-
ки, а их может быть много, будет восприниматься как ввод до
тех пор, пока вы не введете Ctrl-d, что будет означать "конец
файла" или "индикатор конца трансмиссии".
Например, введем:
это две строчки RETURNввода RETURNCtrl-d
Команда cat сразу же выводит на экран каждую вводимую стро-
ку. Таким образом, вывод будет в точности повторять напечатанную
вводимую строку. Вот что вы увидите на экране дисплея:
_________________________________________________________
|
| $ cat
| это две строчки
| это две строчки
| ввода
| ввода
| $
Потоки команд ввода и вывода могут быть "переадресованы",
так, ввод может осуществляться из файла, а не с клавиатуры, а
вывод может быть направлен не на экран, а на принтер. Вдобавок,
вы можете создавать "каналы", чтобы использовать вывод одной ко-
манды в качестве ввода другой. (О переадресации и каналах читай-
те в двух следующих главках).
2.6.1 Переадресация
В UNIX файл может и вводиться с терминала, и выводиться на
терминал. Следующая команда выводит список файлов на экран ваше-
го терминала:
lc
.
2-14
Но если ввести видоизмененную команду, список файлов будет
выведен не на экран, а в файл filelist (который будет создан,
если еще не существует):
lc > filelist
Символ, служащий для указания о переадресации - знак "боль-
ше" ( > ),- означает: "поместить выводной поток в файл, имя ко-
торого следует непосредственно за знаком, а не на экран. Исполь-
зование следующей команды - другой путь для переадресации:
cat f1 f2 f3 > temp
Эта команда помещает копии нескольких файлов в файл temp
путем переадресации вывода команды cat в этот файл.
Еще один символ, используемый в выводе ( >> ), работает
аналогично символу переадресации вывода, а значение его - "доба-
вить конкатенацию file1, file2 и file3 в конец файла temp, не
перекрывая и не уничтожая уже имеющееся там содержимое":
cat file1 file2 file3 >> temp
Как и в случае переадресации вывода, если файл temp еще не
существует, то он создается при таком обращении.
Аналогично, символ переадресации ввода ( < ) означает:
"взять вводной поток для программы из файла, имя которого следу-
ет после знака " < ", а не с терминала". Следующая команда пе-
решлет копии файла letter.txt нескольким пользователям UNIX с
помощью команды mail:
mail adam eve mary < letter.txt
(О команде mail смотрите Часть 6 данного руководства).
2.6.2 Каналы.
Интересной концепцией среди многих других в UNIX является
концепция каналов. Каналы - простой способ использования вывода
одной команды в качестве ввода другой. Последовательность ко-
манд, реализующих этот механизм, называется "конвейером".
.
2-15
Например, предположим, что вам нужно найти все уникальные
строки в 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
Вертикальная черта (|) употреблена между командами uniq и
sort, чтобы показать, что вывод sort, который обычно поступает
на терминал, может быть использован как входной поток команды
uniq, который, в свою очередь, отправляет свой выходной поток на
обзор с помощью команды more.
Следующая команда - другой пример конвейера. Команда wc
подсчитывает количество строк, слов и символов в ее входном по-
токе. Команда who распечатывает текущий список зарегистрировав-
шихся пользователей, каждое имя на новой строке. Таким образом,
следующий конвейер информирует вас о числе зарегистрированных
пользователей путем подсчета количества строк, распечатываемых
по команде who:
who | wc -l
Обратите внимание на разницу в выводе между wc -l и wc. Ко-
манда wc подсчитывает число строк, слов и символов во входном
потоке, а команда wc -l сообщит вам лишь число строк.
Любая программа, входным потоком которой может быть ввод с
клавиатуры, может получать входной поток и по каналу. Аналогич-
но, любая программа, которая может посылать выводной поток на
экран терминала, может выводить также и посредством канала. Вы
можете иметь столько элементов конвейера, сколько пожелаете.
.
Ч А С Т Ь 3Регистрация в системе.
_________________________________________________________
3.1 Введение 3-1
3.2 Получение доступа к системе 3-1
3.2.1 Регистрация в системе 3-1
3.2.2 Выход из системы 3-3
3.2.3 Изменение пароля 3-3
3.3 Обеспечение безопасности ваших ресурсов 3-5
3.3.1 Безопасность пароля 3-5
3.3.2 Безопасность - это ваши хорошие привычки 3-5
3.3.3 Использование бюджета других
пользователей 3-6
3.4 Изменение типа вашего терминала 3-6
3.5 Ввод команд 3-7
3.5.1 Ввод командной строки 3-7
3.5.2 Стирание командной строки 3-8
3.5.3 Останов вывода на экран 3-8
.
3-1
3.1 Введение
Прочтя эту главу, вы узнаете, как выполнить следующие ос-
новные задачи UNIX:
. Вход в систему
. Выход из системы
. Изменение пароля
. Использование бюджета других пользователей
. Переопределение типа вашего терминала
. Ввод команд UNIX
. Стирание командной строки, содержащей ошибки
. Приостановление и возобновление вывода на экран
Материал этой части лучше всего изучать непосредственно за
терминалом, вводя команды, описанные в примерах.
Команды, описанные в этой части, не разобраны в деталях.
Для более полного ознакомления обращайтесь к UNIX User's
Reference.
3.2 Получение доступа к системе.
Для работы в системе UNIX вы сначала должны получить дос-
туп к регистрации. Зарегистрировавшись, вы попадете в свой на-
чальный каталог. Регистрация, изменение пароля и выход из систе-
мы описаны ниже.
3.2.1 Регистрация в системе.
Прежде чем войти в систему, вы должны иметь свой системный
бюджет (выделенные вам ресурсы). В большинстве случаев созданием
вашего бюджета займется системный администратор. Однако, если
вам по каким-либо причинам нужно сделать это самостоятельно, об-
ратитесь к UNIX Sistem Administrator's Guide, откуда можно по-
черпнуть всю необходимую информацию. В данной части вы найдете
описания ваших действий уже после создания бюджета.
.
3-2
Система, готовая начать работу с вами, высвечивает на экра-
не дисплея приглашение-подсказку "login:". Если на экране появи-
лись блики или какая-нибудь абракадабра, нажмите несколько раз
клавишу INTERRUPT (или DEL).
Когда же, наконец, подсказка "login:" появилась на вашем
экране, ваши действия должны быть следующими:
1. Наберите ваше регистрационное имя и нажмите RETURN.
Если в наборе имени вы допустили ошибку, нажмите
Ctrl-u для появления той же командной строки снова
(надавите Ctrl, и, не отпуская, нажмитеклавишу u).
После того,как вы нажмете RETURN, на экране появится
запрос "Password:".
2. Введите ваш пароль и нажмите RETURN. При этом вводимые
вами символы не высвечиваются на экране и курсор не
сдвигается. Это делается, чтобы скрыть от других
пользователей ваш пароль и, таким образом, защитить
ваши записи. Если вы введете регистрационное имя или
пароль неверно, то система высветит на экране следую-
щее сообщение:
_____________________________________________________
|
| Login incorrect
| login:
|
Увидев такое сообщение, введите имя или пароль снова.
3. В зависимости от того, какую конфигурацию имеет ваша
система, ею может быть задан вопрос о типе вашего
терминала. В этом случае на экране вы увидите следую-
щее:
_____________________________________________________
|
| TERM=(unknown)
|
Если такая строка появилась, введите информормацию о
типе вашего терминала. (Если вы не знаете этого, кон-
тактируйте с системным администратором.)
.
3-3
Если вся информация введена правильно, на экране появится
"символ приглашения". В среде Bourne Shell это знак доллара ($),
и в среде C-Shell это знак процентов (%). Этот символ подскажет
вам, с какой именно версией UNIX вы имеете дело.
В зависимости от конфигурации, система может также поинте-
ресоваться о текущей дате.
3.2.2 Выход из системы.
Обычный способ выхода из системы - это на очередной символ
приглашения ответить logout (после % в C-Shell) или exit (после
$ в Bourne Shell). Также иногда для выхода используется комбина-
ция клавиш Ctrl-d. Однако, некоторые системы не предоставляют
возможности выходить по Ctrl-d. Причина тому - стандартное обоз-
начение конца файла в UNIX знаком Ctrl-d, и частое его исполь-
зование для сообщения о конце ввода с клавиатуры. Некоторые
пользователи ошибочно могут нажать Ctrl-d несколько раз, и тем
самым ненамеренно выйти из системы. Для предотвращения такой пу-
таницы системный администратор может отключить такую функцию
Ctrl-d.
Проэкспериментируйте, работает ли на вашей системе Ctrl-d в
качестве указания о выходе. Если нет, то попытайтесь выйти с по-
мощью exit или logout. Если вы не находитесь в системе, войдите
в нее и затем попробуйте выйти по Ctrl-d, exit или logout.
3.2.3 Изменение вашего пароля.
Для предотвращения доступа к системе несанкционированных
пользователей каждый санкционированный пользователь должен иметь
пароль. Когда вы впервые получаете системный бюджет, сделайте
это с помощью системного администратора. Некоторые системы UNIX
требуют регулярного обновления пароля. Вне зависимости от этого
требования, очевидно, что периодически изменять пароль - хорошая
идея (по крайней мере, раз в два месяца) для большей безопаснос-
ти системы.
Для изменения пароля используйте команду passwd. Делается
это следующим образом:
1. Введите следующую команду и нажмите RETURN:passwd
.
3-4
Вы видите:
_____________________________________________________
|
| Changing password for user
| Old password:
|
При этом ваше регистрационное имя появится на месте
слова user.
2. Внимательно введите старый пароль .Он не высветится на
экране. Если вы допустили ошибку, нажмите RETURN. По-
явится сообщение "Sorry", затем приглашение системы.
Начните все снова с шага 1.
3. Следующее сообщение появится, когда вы введете старый
пароль и нажмете RETURN:
_____________________________________________________
|
| New password:
|
Введите ваш новый пароль и нажмите RETURN. Хорошо бы
использовать в пароле комбинацию строчных и прописных
букв.
4. Вы видите следующее сообщение:
_____________________________________________________
|
| Re-enter new password:
|
Снова введите новый пароль. Если вы ошибетесь, то
увидите следующее:
_____________________________________________________
|
| They don't match; try again
|
.
3-5
Когда вся процедура будет закончена, снова появится пригла-
шение UNIX. Когда вы будете снова входить в систему, не забудь-
те, что у вас новый пароль.
3.3 Обеспечение безопасности ваших ресурсов.
В основном, обеспечение безопасности - забота самого поль-
зователя. Небрежное использование или нерегулярное обновление
пароля - реальная угроза благополучию компьютерной системы.
3.3.1 Безопасность пароля.
Несколько полезных советов о специфике безопасности пароля:
1. Не используйте пароль, который легко разгадать. Па-
роль должен содержать не меньше шести символов, вклю-
чающих буквы, цифры и знаки пунктуации. (Например:
frAiJ6*)
2. Пароль не должен быть именем (даже прозвищем), собс-
твенным существительным или другим словом, которое
можно найти в /usr/dict/words. (Не используйте пароль
типа terry9)
3. Всегда держите свой пароль в секрете. Никогда не запи-
сывайте его, не посылайте электронной почтой и не
произносите вслух.
3.3.2 Безопасность - это ваши хорошие привычки.
Это достаточно просто - иметь хорошие привычки для безопас-
ности. Здесь приводятся несколько общих советов.
1. Не забудьте, прежде чем уйти от терминала, выйти из
системы.
2. Покидая терминал, даже на короткое время, используйте
утилиту lock(C).
3. Некоторые "особо чувствительные" файлы не просматри-
вайте публично. (В Части 4 вы найдете информацию о
том, как это сделать)
4. Убирайте флоппи-диски и ленты с конфиденциальной ин-
формацией в ящик с замком, который не забывайте за-
пирать.
.
3-6
5. Если вы заметите что-то странное, происходящее с ваши-
ми файлами и каталогами, или же найдете следы
чьего-нибудь посещения вашего хозяйства, обратитесь к
системному администратору.
3.3.3 Использование бюджета других пользователей.
Вы можете найти необходимым работать с файлами других поль-
зователей. Однако, запросто может так быть, что установленный
для этих файлов режим доступа позволяет лишь владельцу редакти-
ровать его. Чтобы обойти эту проблему, используйте команду su
для изменения вашего текущего распределения ресурсов, включив
часть бюджета другого пользователя. Для использования команды su
вам необходимо знать соответствующий пароль.
Например, чтобы войти в бюджет пользователя по имени joe,
введите на очередное приглашение UNIX (но не на приглашение
login) следующую команду:
su joe
Когда появится запрос о пароле, введите пароль пользователя
joe. Отменить действие команды su и вернуться в ваш собственный
бюджет можно, нажав клавишу Ctrl-d.
3.4 Изменение типа вашего терминала.
В большинстве систем конфигурация позволяет сразу использо-
вать системную консоль для работы с UNIX. Но и многие другие
серийные терминалы различных типов могут быть подключены к сис-
теме UNIX. Если вам предстоит работать на серийном терминале,
важно знать, как специфицируется тип терминала.
Тип терминала высвечивается на его экране всякий раз при
регистрации. Вы можете изменить значение типа вашего терминала с
помощью редактирования файла .profile в вашем начальном каталоге.
Если вы работаете с C-Shell, то вместо файла .profile, которого
у вас нет, редактируйте файл .login, который у вас есть.
Могут быть по крайней мере две причины, по которым вы може-
те захотеть изменить значение высвечиваемого типа терминала:
. У вас может появиться новый терминал, модель которого
не совпадает с моделью вашего прежнего терминала. В
этом случае тот тип терминала, который появится на эк-
ране благодаря старому файлу .profile (.login), будет
неверным.
.
3-7
. Может быть так, что значение типа терминала сооб-
щается системой как "unknown" (неизвестный) или
"ansi" (стандартный), что неверно для вашего термина-
ла. Тогда каждый раз при регистрации вам будет задан
вопрос о типе терминала. Для настройки среды на ваш
терминал в этом случае достаточно нажать клавишу
RETURN в ответ на запрос о типе терминала. Необяза-
тельно явно вводить тип терминала.
Чтобы изменить высвечиваемый тип терминала, воспользуйтесь
редактором vi для исправления .profile (.login). Часть 4 данного
руководства показывает, как пользоваться редактором vi.
Находясь в vi, подгоните курсор к строке, которая выглядит
так:
eval 'tset -m :\?unknown -s -r -Q'
Вместо unknown (или того значения, которое есть) в этой
строке напечатайте значение типа вашего терминала. Например, ес-
ли вы обычно работаете с терминалом vt100, строка будет выгля-
деть следующим образом:
eval 'tset -m :|?vt100 -s -r -Q'
Каждый раз, входя в систему, вы будете встречать следующее
сообщение:
TERM = (vt100)
Нажмите RETURN, и теперь тип терминала установлен vt100.
Нет необходимости вводить vt100.
3.5 Ввод команд.
Прежде чем вы начнете работать с командами, описанными в
оставшейся части данного руководства, вам необходимо подробно
познакомиться с тремя очень полезными возможностями UNIX. Это -
буфер клавиатуры, комбинация клавиш для стирания командной стро-
ки и останов/возобновление вывода на экран. Эти возможности опи-
саны ниже.
3.5.1 Ввод командной строки.
Ввод командной строки состоит из печатания символов и пос-
ледующего нажатия клавиши RETURN. Когда вы нажмете RETURN,
компьютер прочтет командную строку и будет выполнять специфици-
рованную команду. Нажав только RETURN без ввода команды, вы не
вызовите никаких командных действий.
.
3-8
Вы можете вводить подряд несколько командных строк, не
дожидаясь, пока после выполнения очередной команды снова появит-
ся символ приглашения системы. Это возможно благодаря поддержи-
ваемому UNIX буферу клавиатуры. Буфер клавиатуры UNIX может
содержать до 256 вводимых символов. Проэкспериментируйте с ис-
пользованием буфера клавиатуры, вводя следующие команды одну за
другой, причем следующую вводите, не дожидаясь выполнения преды-
дущей. (Всегда нажимайте RETURN после ввода команды. В данном
примере нажимайте RETURN после ввода каждой команды.)
lc -ladu -alc -Fa
Эти команды распечатают полный листинг всех файлов текущего
каталога, затем статистику обращений к диску этих файлов, и, на-
конец, снова список файлов, но в другом формате.
3.5.2 Стирание командной строки.
Вполне вероятно, что вы можете допустить ошибку в наборе
команды. Стереть всю текущую командную строку вы можете с по-
мощью команды Ctrl-u. Когда вы нажмете Ctrl-u, снова появится
приглашение системы, а команда выполнена не будет.
3.5.3 Останов вывода на экран.
Часто просматриваемый поток данных выводится на экран столь
быстро, что вы не успеваете их прочесть. Для приостановки вывода
нажмите Ctrl-s. Для возобновления выдачи на экран нажмите
Ctrl-q. Проведите эксперимент с использованием Ctrl-s и Ctrl-q,
введя следующую ниже команду, затем нажмите Ctrl-s для остановки
вывода и Ctrl-q для его возобновления:
ls /bin
.
Ч А С Т Ь 4.Работа с файлами и каталогами.
___________________________________________________________
4.1 Введение 4-1
4.2 Работа с каталогами 4-1
4.2.1 Печать имени вашего рабочего каталога 4-2
4.2.2 Распечатка содержания каталога 4-2
4.2.3 Изменение вашего рабочего каталога 4-3
4.2.4 Создание каталогов 4-4
4.2.5 Уничтожение каталогов 4-5
4.2.6 Переименование каталогов 4-6
4.2.7 Копирование каталогов 4-6
4.3 Редактирование файлов с помощью редактора vi 4-7
4.3.1 Ввод текста 4-7
4.3.2 Движение курсора 4-8
4.3.3 Удаление текста 4-8
4.3.4 Вставка текста 4-9
4.3.5 Выход из редактора vi 4-9
4.4 Распечатка файлов 4-10
4.4.1 Использование lp 4-10
4.4.2 Использование опций lp 4-11
4.4.3 Отмена запроса о печати 4-12
4.4.4 Нахождение состояния запроса о печати 4-12
4.5 Работа с файлами 4-13
4.5.1 Отображение на экране содержания файла 4-14
4.5.2 Удаление файлов 4-16
4.5.3 Комбинирование файлов 4-16
4.5.4 Переименование файлов 4-17
4.5.5 Перемещение файлов 4-18
4.5.6 Копирование файлов 4-18
4.5.7 Нахождение файлов 4-19
.
4.6 Обработка текстовых файлов 4-20
4.6.1 Сопоставление файлов 4-20
4.6.2 Сортировка файлов 4-21
4.6.3 Поиск шаблонов в файле 4-21
4.6.4 Подсчет слов, строк и символов 4-22
4.7 Использование режимов доступа к файлам и каталогам 4-23
4.7.1 Изменение режимов доступа к файлам 4-26
4.7.1 Изменение режимов доступа к каталогам 4-28
.
4.1 Введение.
В этой части содержится информация о том, как выполнять
следующие команды UNIX:
. Напечатать имя текущего каталога,
. Просмотреть содержание каталога,
. Перейти в другой каталог,
. Создать, уничтожить, переименовать и скопировать ката-
лог,
. Использовать при создании файла текстовый редактор vi,
. Распечатать файлы,
. Вывести на экран содержимое файла,
. Уничтожить, скомбинировать, переименовать, передвинуть,
скопировать и найти файлы,
. Соотнести и рассортировать файлы,
. Найти шаблоны в файле,
. Подсчитать слова, строки и символы в файле,
. Использовать режимы доступа к файлам и каталогам.
Эта часть построена как самоучитель. Изучать ее лучше всего
непосредственно за терминалом, вводя данные в примерах команды.
Ни одна из описанных здесь команд не дана в деталях. Для
более подробного ознакомления обратитесь к UNIX User's
Reference.
4.2 Работа с каталогами.
Благодаря иерархической структуре файловой системы, любая
система UNIX имеет много каталогов и подкаталогов. UNIX вклю-
чает в себя несколько команд, упрощающих работу с каталогами.
Эти команды описаны в следующих главках.
.
4-2
4.2.1 Печать имени вашего рабочего каталога.
Каталог, в котором вы сейчас находитесь, на какое-то время
стал вашим рабочим каталогом. Все вводимае команды выполняются
относительно рабочего каталога. Имя этого каталога можно узнать
по команде pwd, которая расшифровывается как "print working
directory" ("напечатать рабочий каталог"). Узнать, каков ваш ра-
бочий каталог, можно, введя следующую команду:
pwd
Когда в системе вы впервые, вы находитесь в вашем начальном
каталоге.
4.2.2 Распечатка содержания каталога.
Несколько родственных команд используется для распечатки
содержания каталога:
lc Эта команда - вариант команды ls. Команда ls
упорядочивает в алфавитном порядке и печатает
содержание каталога. Команда lc тоже упорядо-
чивает в алфавитном порядке содержание ката-
лога и печатает его в виде стобцов.
lf Эта команда похожа на lc, и к тому же она от-
мечает каталоги слэшем (/) и выполнимые файлы
(компьютерные программы) звездочкой (*).
Введите следующую команду для распечатки содержания
/usr/bin:
lc /usr/bin
Этот каталог содержит много выполнимых файлов, с которыми
вы работаете в среде UNIX. Введите команду lc без имени катало-
га для распечатки содержания текущего каталога.
.
4-3
Также полезна команда l. Она эквивалентна команде ls -l,
которая производит "длинную" распечатку содержания каталога.
Вывод будет примерно таким:
__________________________________________________________
|
| total 338
| -rw-rw-r-- 1 markt pub 4448 Mar 1 09:16 1.intro.00
| -rw-rw-r-- 1 markt pub 4457 Mar 1 09:29 1.intro.s
| -rw-rw-r-- 1 markt pub 33836 Mar 1 09:30 2.consepts.00
| -rw-rw-r-- 1 markt pub 35096 Mar 1 12:49 2.consepts.s
| -rw-rw-r-- 1 markt pub 52197 Mar 1 15:09 3.basic.s
| -rw-rw-r-- 1 markt pub 39835 Feb 16 11:02 4.advan.s
|
По команде l, читая слева направо, мы получим следующую
информацию о каждом файле или каталоге:
. Режим доступа
. Число каналов связи
. Владелец
. Группа
. Размер в байтах
. Время последней модификации
. Имя файла
Запись в верху списка показывает общее число "блоков", ис-
пользуемых на диске для хранения всех этих файлов. Один блок со-
держит 512 байтов. 338 блоков, или 173056 байтов, необходимо для
хранения описанных выше файлов.
4.2.3 Изменение вашего рабочего каталога.
Ваш рабочий каталог - это то место в файловой системе, где
вы находитесь. Перейти в другой каталог файловой системы UNIX
можно по команде cd.
.
4-4
Введя команду cd без параметров, вы окажетесь в вашем на-
чальном каталоге. Попробуйте. Введите cd. Чтобы быть уверенным,
что вы находитесь в вашем начальном каталоге, проверьте это с
помощью команды pwd.
Чтобы перейти в каталог, отличный от вашего начального ка-
талога, специфицируйте нужный каталог как аргумент в команде cd.
Например, введя следующую команду, вы окажетесь в /usr/bin:
cd /usr/bin
Проверьте, что вы в /usr/bin, введя pwd.
Попасть в корневой каталог можно по команде:
cd /
Корневой каталог - "вершина" файловой системы. (Игра слов,
так как дерево файлов инвертировано.) Все прочие каталоги нахо-
дятся "ниже" его. Посмотрим с помощью команды lf файлы и катало-
ги, содержащиеся в корневом каталоге. Затем вернемся в ваш на-
чальный каталог. (О начальном каталоге более подробно смотрите
Часть 2 данного руководства.)
Некоторые стенографические нотации помогут более быстрому
перемещению в файловой системе. Для того, чтобы попасть в ката-
лог на один уровень выше текущего, введите:
cd ..
Введите следующую команду - и вы на два уровня выше:
cd ../..
Если вы введете последнюю команду, находясь в своем началь-
ном каталоге, то, вероятнее всего, окажетесь в корневом катало-
ге. Проверьте это (pwd).
4.2.4 Создание каталогов.
Находясь в вашем рабочем каталоге, вы можете создать подка-
талог с помощью команды mkdir. Ведите cd для перехода в ваш на-
чальный каталог и затем введите следующую команду для создания
подкаталога с именем tempdir:
mkdir tempdir
.
4-5
Проверьте с помощью команды lf, что tempdir существует. Пе-
рейдите в tempdir с помощью команды cd и проверьте, что tempdir
пуст (по lf). Наконец, воспользуйтесь командой touch(C) для соз-
дания в tempdir двух пустых файлов:
touch tempfile1 tempfile2
Введите снова lf для проверки, что tempfile1 и tempfile2
созданы.
Если вы хотите создать подкаталог в каталоге, то это вам
удастся лишь в том случае, если вы имеете режим доступа по запи-
си. Если вы такого режима доступа не имеете и воспользуетесь ко-
мандой mkdir, вы получите следующее сообщение:
mkdir: cannot acctss directory_name
В этом сообщении directory_name будет представлять собой
имя каталога, в котором вы пытались создать подкаталог. Попро-
буйте проделать это в каталоге /etc, где вы скорее всего не име-
ете режима доступа по записи:
mkdir /etc/temp
4.2.5 Уничтожение каталогов
Для уничтожения каталога используйте команду rmdir. Эта ко-
манда неприменима к каталогам, содержащим подкаталоги и файлы.
Проверьте это: перейдите в ваш начальный каталог посредством ко-
манды cd и затем введите следующую команду для уничтожения соз-
данного в 4.2.4 каталога tempdir:
rmdir tempdir
Вы должны увидеть следующее сообщение:
rmdir: tempdir not empty
Чтобы уничтожить каталог tempdir с помощью rmdir, вы можете
прежде уничтожить файлы tempfile1 и tempfile2, содержащиеся в
нем. Но не надо это проделывать сейчас, так как они нам понадо-
бятся в дальнейшем.
.
4-6
4.2.6 Переименование каталогов.
Для переименования каталога используйте кoманду mv. Напри-
мер, перейдите в ваш начальный каталог по команде cd и затем
введите следующую команду для переименования tempdir - каталога,
созданного в 4.2.4, - в newdir:
mv tempdir newdir
Проверьте, что имя изменено, с помощью команды lf. Заметим,
что в результате изменения имени каталога на newdir с файлами,
содержащимися там, ничего не происходит. Прверьте это командой
lf:
lf newdir
4.2.7 Копирование каталогов.
Команда copy копирует каталоги. Конечно, прежде чем копиро-
вать содержание одного каталога в другой, вы должны иметь режим
доступа по записи для второго каталога.
Чтобы скопировать каталог /newdir, созданный в 4.2.6, и все
содержащиеся там файлы в tmp/newdir, введите следущую команду:
copy $HOME/newdir /tmp/newdir
В этой команде "$HOME" - стенографическое название пути к
вашему начальному каталогу.
Чтобы проверить, что файлы из $HOME/newdir скопированы в
/tmp/newdir, введите следующую команду:
lf /tmp/newdir
Уничтожьте /tmp/newdir, введя следующие команды:
rm /tmp/newdir/*
rmdir /tmp/newdir
.
4-7
Первая команда уничтожит все файлы в /tmp/newdir, вторая
команда уничтожит каталог /tmp/newdir. Проверьте, что
/tmp/newdir уничтожено, вводя следующую команду:
lf /tmp
Уничтожьте $HOME/newdir, введя следующие команды:
rm $HOME/newdir/*
rmdir $HOME/newdir
4.3 Редактирование файлов с помощью редактора vi.
Текстовый редактор vi является экранным редактором, вклю-
ченным в ОС UNIX. В этой главке сжато описано использование ре-
дактора vi. Для более подробного ознакомления обращайтесь к
UNIX User's Guide.
4.3.1 Ввод текста.
Измените ваш каталог на начальный с помощью команды cd, и
введите следующую команду для создания файла tempfile:
vi tempfile
Появится сообщение, из которого вы узнаете, что создали но-
вый файл. Заодно вы попали в редактор vi.
Существует два режима в vi: режим вставки и режим команд.
Используйте режим вставки для добавления текста в файл, а режим
команд - для исправления существующего текста. Так как tempfile
пуст, введите i для работы в режиме вставки.
Введите следующие строки текста, нажимая RETURN после каж-
дой строки. Если вы сделали ошибку в наборе строки, используйте
клавишу BKSP для стирания и продолжайте набор символов:
Этот самоучитель очень, очень помогает мне.
С ним легко изучать применение системы UNIX.
Как я рад, что имею такой самоучитель.
После того, как вы введете последнююю строку, нажмите кла-
вишу ESC. При этом вы выйдете из режима вставки и попадете в ре-
жим команд.
.
4-8
4.3.2 Движение курсора.
Хотя существует много команд для перемещения курсора, оста-
новимся здесь лишь на четырех (всегда подразумевается, что вы в
режиме команд):
h Находясь в режиме команд, нажимайте h для перемещения
на один символ влево.
l Перемещение на один символ вправо.
k Перемещение на одну строку вверх.
j Перемещение на одну строку вниз.
Попробуйте использовать эти команды для перемещения курсора
во введенном вами тексте. Заметим, что часто клавиши-стрелки
представляют клавиши h,l,k,j для управления движением курсора.
4.3.3 Удаление текста.
Удалить текст в редакторе vi очень просто. Здесь есть раз-
личные команды для удаления символов, слов и целых строк.
Для удаления одного символа подведите курсор под этот сим-
вол и нажмите клавишу x. Попробуйте, как работает эта клавиша,
удаляя запятую в первой строке текста.
Чтобы удалить слово, подведите курсор под первый символ
слова и нажмите dw (нажмите d, и, отпустив, нажмите w). Попро-
буйте использовать эту команду, удаляя слово "очень" в первой
строке вашего текста.
Чтобы удалить строку, поместите курсор на любое место этой
строки и нажмите dd (нажмите d, а потом, отпустив, снова d).
Попробуте с помощью этой команды удалить третью строку вашего
текста. Теперь ваш текст должен выглядеть следующим образом:
_________________________________________________________
|
| Этот самоучитель очень помогает мне.
| С ним легко изучать применение системы UNIX.
|
.
4-9
4.3.4 Вставка текста.
Клaвиши i и o используются для вставки текста. Мы уже ис-
пользовали клавишу i для вставки текста в пустой файл. Если вы
хотите добавить текст в существующую строку, подведите курсор к
тому месту, куда бы вы хотели поместить новый кусок, нажмите i
для перехода в режим вставки, введите текст и вернитесь в режим
команд, нажав клавишу ESC. Например, подведите курсор к "л" в
слове "легко" во второй строке, нажмите i, введите слово
"очень", нажмите пробел и вернитесь в режим команд с помощью ESC
. Вторая строка будет выглядеть так:
__________________________________________________________
|
| С ним очень легко изучать применение системы UNIX.
|
Клавиша o может быть использована для вставки новой строки.
Поместите курсор непосредственно выше того места в файле, где
будет помещена вставляемая строка, и нажмите o. Появится место
для новой строки, при этом курсор попадет на начало строки. Вы
автоматически попали в режим вставки. Попробуйте, поместив кур-
сор во вторую строку tempfile и нажав o. Теперь введите новый
текст. Нажмите ESC, когда закончите.
4.3.5 Выход из редактора vi.
Через какое-то время вы захотите сохранить ваш файл, преж-
де, чем покинуть vi. Чтобы сделать это, перейдите в режим команд
и наберите :x. Эта команда сохранит файл, который вы редактиро-
вали, и вернет вас в среду UNIX.
В некоторых случаях вам понадобится выйти из редактора без
сохранения вашей работы. Для этого в режиме команд наберите :q!.
Эта команда вернет вас в среду UNIX без внесения изменений в
тот файл, с которым вы занимались.
Выйдите из tempfile, нажав :x. Снова войдите в tempfile,
введя следующую команду:
vi tempfile
.
4-10
Вставьте какой-либо текст с помощью i или o, нажмите ESC и
введите :q! для выхода без сохранения внесенных изменений.
Прсмотрите tempfile с помощь следующей команды:
cat tempfile
Вы заметите, что последние изменения не высветились. Унич-
тожьте tempfile с помощью команды
rm tempfile
4.4 Распечатка файлов.
Распечатать файл можно с помощью команды lp. Это одна из
так называемых команд "строчного принтера". Команды строчного
принтера легки в использовании и очень гибки. С помощью несколь-
ких простых команд вы можете напечатать много копий вашего фай-
ла, отменить запрос о печати или задать специальные опции для
принтера. Проверьте вместе с вашим системным администратором на-
личие в вашей системе опций для команд управления принтером.
4.4.1 Использование lp.
С помощью команды cd перейдите в ваш начальный каталог и
введите следующую команду для создания файла, с которым можно
поэкспериментировать:
cp /etc/motd $HOME/printfile
Эта команда поместит копию /etc/motd в ваш начальный ката-
лог под названием printfile. Файл /etc/motd - "message of the
day file" - файл "сообщения о дате". Его содержание появляется
на экране вашего дисплея каждый раз при регистрации в системе.
Каталог должен быть открыт для выполнения любому пользова-
телю, чтобы вы могли распечатать какой-либо файл из него. Это
означает, что и другие пользователи должны иметь режим доступа
по выполнению в этом каталоге. Чтобы сделать каталог общеупотре-
бимым, введите следующую команду:
chmodo+x $HOME
(Смотрите "Использование режимов доступа к файлам и катало-
гам" далее в этой части, где более подробно об chmod(C).)
.
4-11
Введите следующую команду для печати printfile:
lp printfile
Эта команда по умолчанию пошлет одну копию файла printfile
на принтер для печати. Заметим, что вы можете распечатать нес-
колько файлов, помещая их имена в качестве аргументов команды lp.
Когда вы печатаете с помощью lp, на экране высвечивается
"сообщение ID", которое выглядит примерно так:
pr4-532
Первая часть этого сообщения (pr4) - название принтера, на
котором вы печатаете. Вторая часть (532) идентифицирует ваш ра-
бочий номер. Если вы захотите позже отозвать свой запрос о печа-
ти или изменить его состояние, припомните сообщение ID. (Отмена
и изменение состояния запроса о печати описано ниже.)
Также вы можете использовать lp с каналами. Например, вве-
дите следующую команду для сортировки и последующей печати копии
файла /etc/passwd, содержащего информацию о системном бюджете:
sort /etc/passwd | lp
(Подробнее о sort(C) смотрите "Сортировка файлов", ниже в
этой части.)
4.4.2 Использование опций lp.
Команда lp имеет несколько опций, которые помогут вам конт-
ролировать вывод на печать. Вы можете задать число копий, кото-
рые вы хотите получить отпечатанными, с помощью числовой опции
-n. Например, чтобы напечатать две копии printfile, введите:
lp printfile -n2
Часто с одной системой UNIX связаны несколько различных
принтеров. С помощью опции -d вы можете специфицировать принтер,
на котором хотите распечатать ваш файл. Для того, чтобы напеча-
тать две копии вашего файла printfile на принтере, который назы-
вается laser, введите:
lp printfile -n2 -dlaser
Вместе с вашим системным администратором проверьте имена
ваших принтеров.
.
4-12
4.4.3 Отмена запроса о печати.
Используйте команду cancel для отмены запроса о печати. Ко-
манда cancel берет аргумент из ID-сообщения. Например, остано-
вить печать файла с ID-сообщением от laser-245 можно, введя сле-
дующую команду:
cancel laser-245
Попробуйте начать печать по команде lp и затем остановить
печать по команде cancel. Закончив, введите следующую команду
для уничтожения printfile:
rm printfile
Вы можете использовать команду cancel для остановки текущей
печати. Например, чтобы прервать происходящую в данный момент
печать какого-либо файла на принтере laser, введите следующую
команду:
cancel laser
Если вы прерываете печать чужого файла, его владельцу тот-
час будет послано сообщение об этом.
4.4.4 Нахождение состояния запроса о печати.
Используйте команду lpstat для изменения состояния запроса
о печати. Для этого просто введите следующее:
lpstat
Команда lpstat выдаст примерно такой текст:
_________________________________________________________
|
| prt1-121 cindum 450 Dec 15 09:30
| laser-450 cindum 4968 Dec 15 09:46
|
.
4-13
Заметим, что, используя команду lpstat без опций, вы полу-
чите информацию только о своих файлах. Если вы интересуетесь по-
добной информацией о файлах всех пользователей данного компьюте-
ра, используйте команду lpstat с опцией -o. Эта команда не даст
никакой информации, если работа принтера завершена.
Первая колонка выданного по команде lpstat текста содержит
ID-сообщение для каждого файла, находящегося в печати. Вторая
колонка показывает ваше регистрационное имя. В третьей колонке
содержится число символов, которые будут напечатаны, и в четвер-
той колонке - дата и время поступления запроса о печати.
Для изучения состояния отдельного файла используйте команду
lpstat с ID-сообщением файла. Например, для нахождения состояния
файла с ID-сообщением laser-256 введите следующую команду:
lpstat laser-256
Будет высвечено состояние только одного файла.
Вы можете также запросить состояние принтеров вашей систе-
мы, используя опцию -p, или же задавая имена отдельных интересу-
ющих вас принтеров. Следующая команда поможет вам узнать инфор-
мацию обо всех принтерах системы:
lpstat -p
Чтобы узнать состояние принтера laser, введите:
lpstat -plaser
Высветились ID-сообщение и информация о состоянии всех фай-
лов, ожидающих в данный момент печати на принтере laser.
4.5 Работа с файлами.
Манипуляции с файлами ( создание, удаление, печать на экра-
не, комбинирование, переименование, перемещение и копирование )
входят в число наиболее важных функций операционной системы. Ко-
манды UNIX, реализующие эти функции, описаны ниже.
.
4-14
4.5.1 Отображение на экране содержания файла.
Команда more печатает на экране содержание файла, причем,
напечатав столько, сколько умещается на полном экране, она при-
останавливает вывод. Эта команда не может быть использована для
редактирования файла. Если размер файла превосходит один экран,
то после выдачи каждого куска файла вы увидите следующее сообще-
ние:
--More--(XX%)
XX% показывают, сколько процентов текста уже напечатано на
экране. Для медленной, построчной выдачи текста нажимайте клави-
шу RETURN. Для поэкранной выдачи нажимайте пробел.
Введите следующую команду:
more /etc/rc
При этом на эране начнет печататься файл /etc/rc. Для пре-
рывания печати файла прежде, чем она будет завершена, нажмите q.
Команда more не позволяет листать назад, к началу файла.
Однако, вы можете, используя команду more, организовать поиск по
шаблону, взяв шаблон как аргумент через слэш (/). Например, вве-
дите следующую команду для поиска строки, содержащей слово
"process" в /etc/rc :
more /etc/rc
Вверху на экране вы увидите следующее сообщение:
________________________________________________________
|
| ...skipping
|
Если шаблон будет найден, на экране под этим сообщением вы
увидите две искомые строки. В противном случае будет выдано со-
общение "Pattern not found" ("Шаблон не найден").
Если при просмотре файла с помощью команды more вы находи-
те, что этот файл нужно редактировать, то в редактор vi вы може-
те попасть, нажав клавишу v. Конечно, вы должны иметь режим дос-
тупа по записи к этому файлу для редактирования с помощью этого
или другого редактора. Для печати содержимого файла на экране
нужно иметь режим доступа по чтению.
.
4-15
Вы можете использовать команду more с каналами. Например,
команда more полезна, когда вы хотите вывести содержание катало-
га в длинном формате. Введите следующую команду для поэкранной
печати содержания каталога /bin в длинном формате:
l /bin | more
(О каналах читайте Часть 2 данного руководства.)
Команды head и tail выводят на печать соответственно начало
и конец файла. Применяемые без опций, они печатают по 10 строк
от начала и от конца файла. Введите следующую команду для печати
на экране 10 последних строк файла /etc/rc:
tail /etc/rc
Количество необходимых вам для просмотра строк вы можете
указать точно. Введите следующую команду для печати первых 20
строк /etc/rc:
head -20 /etc/rc
Введите для печати 20 последних строк /etc/rc:
tail -20 /etc/rc
Команда cat также выдает на экран содержание файла. Подобно
команде more, cat непрерывно печатает файл до тех пор, пока вы
не остановите просмотр нажатием Ctrl-s. Ctrl-d продолжит прос-
мотр. Просмотр автоматически прекратится, когда будет достигнут
конец файла. Для прекращения просмотра до его завершения нажмите
INTERRUPT (Del).
Введите следующую команду для просмотра содержания файла
/etc/termcap. Используйте Ctrl-s и Ctrl-d для остановки и возоб-
новления просмотра и INTERRUPT для его досрочного завершения:
cat /etc/tempcat
.
4-16
4.5.2 Удаление файлов.
Команда rm используется для удаления файлов. Мы уже показы-
вали на разных примерах этой части действие команды rm. Измените
ваш каталог на начальный с помощью команды cd и введите следую-
щую команду для создания трех новых файлов:
touch tempfile1 tempfile2 tempfile3
Удалите файл tempfile3 командой:
rm tempfile3
Опция -i позволит вам обеспечить контроль за удалением фай-
лов, когда перед каждым удалением вам будет задаваться вопрос,
действительно ли вы хотите удалить файл, имя которого стоит в
командной строке. Если вы нажмете y и затем RETURN, данный файл
будет удален. Если нажать n, файл останется нетронутым. Эта оп-
ция полезна, когда происходит удаление файлов из каталога, со-
держащего много файлов. Она поможет вам не удалить ошибочно те
файлы, которые вы хотите на самом деле сохранить.
Попробуйте применить эту опцию в следующей команде:
rm -i tempfile1 tempfile2
Заметим, что в подобной команде аргументами могут быть нес-
колько файлов. Это верно для большинства команд UNIX. Вы можете
также использовать универсальные символы. Например, вместо ис-
пользования предыдущей команды, вы могли бы получить тот же ре-
зультат с помощью такой команды:
rm -i tempfile*
(Использование универсальных символов в командах UNIX опи-
сано в Части 2 данного руководства.)
4.5.3 Комбинирование файлов.
Помимо печати на экране, команда cat может быть использова-
на для комбинирования нескольких существующих файлов в один но-
вый файл. Это достигается путем переадресации вывода cat в новый
файл. Для переадресации используется знак больше ( > ). Если
этот новый файл не существует, он будет создан автоматически.
(Если вы не знакомы с переадресацией, читайте Часть 2 данного
руководства.)
.
4-17
Перейдите в ваш начальный каталог с помощью команды cd и
введите следующую команду для комбинирования файлов /etc/motd и
/etc/rc в один файл catfile:
cat /etc/motd /etc/rc > catfile
Теперь просмотрим содержимое нового файла catfile с помощью
команды more:more catfile
Символ >> может быть использован для подсоединения одного
файла в конец другого файла. Например, присоединим содержимое
/etc/motd к catfile, введя следующую команду:
cat /etc/motd >> catfile
Теперь в начале и в конце catfile находится /etc/motd. Про-
верим это с помощью следующих команд:
head -20 catfile
tail -20 catfile
4.5.4 Переименование файлов.
Команду mv в UNIX можно использовать двояко: для перемеще-
ния файлов и для их переименования. Перейдите в ваш начальный
каталог по команде cd. Переименуйте ваш файл catfile, созданный
в 4.5.3, в catfile2, для этого введите:
mv catfile catfile2
После выполнения этой команды catfile закончит свое сущест-
вование. Файл catfile2 будет размещен на его месте. Убедитесь в
этом:
lc
.
4-18
4.5.5 Перемещение файлов.
Для перемещения файла в другой каталог используйте в коман-
де mv в качестве последнего аргумента имя нужного каталога. Не
обязательно указывать имя файла в новом каталоге. Например, сле-
дующая команда перешлет файл catfile2, созданный в 4.5.4, в ка-
талог /tmp:
mv $HOME/catfile2 /tmp
Чтобы быть уверенным, что файл catfile2 находится в /tmp и
его нет в текущем каталоге, введите:
lc . /tmp
(Помните, что в большинстве команд UNIX может быть исполь-
зовано больше одного аргумента, и точка (.) обозначает текущий
каталог.)
Наконец, верните назад в текущий каталог файл catfile2 с
помощью следующей команды:
mv /tmp/catfile2
Команда mv всегда проверяет, является ли последний ее аргу-
мент именем каталога. Если это так, то все файлы, являющиеся ар-
гументами этой команды, пересылаются в этот каталог. Однако, ес-
ли в этом каталоге вы не имеете режима доступа по записи, ваши
попытки пересылки файлов не увенчаются успехом.
4.5.6 Копирование файлов.
Команда cp служит для копирования файлов. Эта команда су-
ществует в двух вариантах: первый - когда файлы копируются в ка-
талог, и второй - когда файл копируется в другой файл.
Перейдите в ваш начальный каталог с помощью команды cd. За-
тем с помощью следующей команды скопируйте содержание файла
catfile2, созданного в 4.5.4, в файл catfile3:
cp catfile2 catfile3
Теперь вы имеете два файла с идентичным содержанием. Чтобы
скопировать файлы catfile2 и catfile3 в каталог /tmp, введите:
cp catfile2 catfile3 /tmp
.
4-19
Упростим эту последнюю команду с помощью использования уни-
версального символа:
cp catfile* /tmp
Подобно команде mv, cp всегда проверяет, является ли ее
последний аргумент именем каталога. Если это так, то все файлы,
имена которых являются аргументами этой команды, будут скопиро-
ваны в этот каталог. Однако, в отличие от команды mv, cp остав-
ляет обработанные файлы без изменений. Теперь в системе будет по
две копии файлов catfile2 и catfile3, по одногй копии каждого в
текущем каталоге, и по одной - в /tmp.
4.5.7 Нахождение файлов.
Файловая сисема UNIX может содержать тысячи файлов. Поэто-
му довольно просто потерять файл. С помощью команды find можно
организовать просмотр файловой системы для поиска файла. Эта ко-
манда имеет вид:
find pathname -name filename -print
pathname - маршрут к каталогу, который вы хотите просмот-
реть. Просмотр рекурсивный: он перебирает все файлы и просматри-
вает все подкаталоги каталога, имя которого вы указали.
Опция -name сообщает, что вы проводите поиск файлов, имена
которых - filename. Опция -print позволяет напечатать на экране
дисплея маршруты ко всем файлам, имена которых указаны в этой
команде.
Введите следующую команду для поиска всех тех каталогов и
подкаталогов, где есть файл catfile2, созданный в 4.5.4:
find / -name catfile2 -print
Выполнение этой команды займет, быть может, несколько ми-
нут. Выдача этой команды покажет, что файл catfile2 встречается
по меньшей мере в дважды: один в каталоге /tmp и один в вашем
начальном каталоге. Удалим catfile2 и catfile3 из /tmp и вашего
начального каталога путем ввода команды:
rm /tmp/catfile* $HOME/catfile*
.
4-20
4.6 Обработка текстовых файлов.
UNIX включает утилиты, позволяющие обрабатывать текстовые
файлы. Эти утилиты предоставляют возможности сопоставлять содер-
жание двух файлов, сортировать файлы, осуществлять поиск по шаб-
лону, подсчитывать символы, слова и строки в тексте. Обо всех
этих возможностях вы прочтете ниже.
4.6.1 Сопоставление файлов.
Команда diff позволяет сопоставлять содержание двух файлов
и печатать те строки, которые в этих файлах различаются. Чтобы
попробовать эту возможность в работе, войдите в редактор vi для
создания двух файлов и работы с ними. Пусть эти файлы называются
men и women. Сначала войдите по команде cd в ваш начальный ката-
лог. Затем на приглашение UNIX введите следующую команду:
vi men
Теперь, попав в редактор, войдите в режим вставки - нажмите
i - и наберите следующий текст:
Настало время всем добрым мужчинам
Прийти на помощь своей партии.
Перейдите в режим команд (Esc) и сохраните файл men, введя
:w. Находясь в режиме команд, создайте файл women:
:n women
Вы увидите следующее сообщение:
"women" No such file or directory
Вы находитесь теперь в файле women. Нажмите i для перехода
в режим вставки и введите следующие строки:
Настало время всем добрым женщинам
Прийти на помощь своей партии.
Нажмите Esc для возврата в режим команд, затем наберите :x
и выйдите из редактора vi. Теперь у вас есть два файла: men и
women.
Введите следующую команду для сопоставления содержания двух
файлов:
diff men women
.
4-21
Выполнение команды diff вызовет печать такого текста:
_________________________________________________________
|
| lcl
| < Настало время всем добрым мужчинам
| ---
| > Настало время всем добрым женщинам
|
Эти две строки - то, чем различаются два файла men и women.
4.6.2 Сортировка файлов.
Одной из наиболее полезных команд обработки файлов является
команда sort. Команда sort без параметров располагает строки
файла в алфавитном порядке, рассматривая строки с самого левого
символа. Рассортированные таким образом строки выводятся затем
на экран или, в случае переадресации вывода, в файл. Данная ко-
манда не воздействует на содержимое текущего файла.
Введите следующую команду для распечатывания на экране
в алфавитном порядке списка всех пользователей, имеющих систем-
ный бюджет:
sort /etc/passwd
Команда sort может работать с каналами. Введите следующую
команду для выдачи на экран в алфавитном порядке имен всех ра-
ботающих в данный момент пользователей:
who | sort4.6.3 Поиск шаблонов в файле.
Команда grep выбирает и отделяет строки файла, печатая лишь
те из них, которые содержат совпадающие с данным шаблоном части.
С помощью следующей команды распечатайте строки файла
/etc/passwd, содержащие вашу регистрационную информацию. Возмож-
но, вся эта информация уместится в одной строке:
grep login /etc/passwd
.
4-22
Замените в этой команде login на ваше регистрационное имя.
Выведенная информация будет иметь примерно такой вид:
_______________________________________________________________
|
| markt:0V/WE/utnUkpc:6005:104:Mark Taub, Docland:/u/markt:/bin/csh
|
Заметим, что всегда, когда в команде grep используется
универсальный символ, шаблон должен быть заключен в одинарные
кавычки ('). Заметим также, что использование шаблонов требует
большой тщательности. Набрав в команде "joe", вы никогда не
найдете "Joe".
Другой пример: предположим, что у вас есть файл - телефон-
ная книжка phonelist, содержащий имена и телефонные номера вла-
дельцев телефонов. В этом файле может быть несколько тысяч
строк. Вы можете использовать команду grep для поиска телефон-
ного номера какого-либо человека по имени Joe, чей номер начи-
нается с цифр 822:
grep 'Joe' phonelist | grep '822-' > joes.number
Сначала утилита grep найдет в файле phonelist все строки,
содержащие слово "Joe". Вывод этой команды будет просмотрен
другой командой grep, которая среди всех этих строк найдет те,
в которых номер начинается с "822-". Наконец, искомые строки
(скорее всего, лишь одна) будут помещены в файл joes.number.
Еще две команды UNIX производят поиск шаблонов. Это ко-
манды egrep и fgrep. Для более подробной информации о команде
grep обращайтесь к UNIX User's Reference.
4.6.4 Подсчет слов, строк и символов.
Утилита wc подсчитывает количество слов в файле. Под сло-
вами эта команда подразумевает все то, что отделено знаками
пунктуации, пробелами, знаками табуляции и переходом на новую
строку. Кроме слов, команда wc подсчитывает строки и символы.
.
4-23
Перейдите в ваш начальный каталог по команде cd. Затем
введите следующую команду для подсчета строк, слов и символов в
файле men, созданнго в 4.6.1:
wc men
Выдача этой команды будет следующей:
__________________________________________________________
|
| 2 10 55 men
|
Эти числа означают следующее: первое - число строк в файле
men, второе - число слов и третье - число символов. Теперь уда-
лите файлы men и women с помощью следующей команды:
rm *men
Для спецификации подсчета символов, слов и строк по от-
дельности существуют опции -c, -w и -l соответственно. Напри-
мер, с помощью следующей команды вы сможете подсчитать число
зарегистрированных в данный момент пользователей:
who | wc -l
Команда who создает список работающих с системой пользова-
телей, по одному на строке. Команда wc -l подсчитает получивши-
еся строки. Это и будет искомое число.