Модуль 1-2. Введение в UNIX. Вход в систему и простейшие действия.

Презентация:



Advertisements
Похожие презентации
1.Открыть новое окно редактирования для ввода программы Файл Новый. 2.Набрать текст новой программы. 3.Сохранить текст программы на диске Файл Сохранить.
Advertisements

Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
Презентация на тему: Белгород Белгород2006 «Не графические Операционные системы» Выполнил: Пойманов В.Н.
Файловые архивы Internet Файловые архивы Internet Протокол FTP Протокол FTP Режимы обмена данными Режимы обмена данными Программное обеспечение доступа.
Часть 1 Простейшая программа Программа на языке QBASIC состоит из последовательности инструкций – команд компилятору. Если в строке записано несколько.
Введение в параллельные вычисления. Технология программирования MPI (день первый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Текстовые файлы Вербицкая Ольга Владимировна, Заозерная школа 16.
Выполнение запросов, создание и редактирование отчета MS Access.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Знакомство с клавиатурой АВТОР ЛСА : ЫОВАА... Клавиатура – это устройство, предназначенное для ввода информации пользователем. Клавиатура служит для ввода.
«Первые шаги в MS Excel ». НАЗНАЧЕНИЕ И ОБЛАСТИ ПРИМЕНЕНИЯ ТАБЛИЧНЫХ ПРОЦЕССОРОВ ПРАКТИЧЕСКИ В ЛЮБОЙ ОБЛАСТИ ДЕЯТЕЛЬНОСТИ ЧЕЛОВЕКА, ОСОБЕННО ПРИ РЕШЕНИИ.
Инструкция по созданию базы данных в Microsoft Access
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Текстовый редактор Microsoft Word. Содержание Начальные сведения. Основные понятия Правила работы с текстом Сохранение документа.
Начала программирования Занятие 2. Вывод на экран и ввод с клавиатуры. Цикл со счетчиком.
Понятие переменной Переменная – это величина, которая изменяется в процессе работы программы. Для описания переменной следует указать имя переменной,
Транксрипт:

Модуль 1-2. Введение в UNIX. Вход в систему и простейшие действия.

Что такое операционная система? Операционная система Пользователи Программы Потребители Магнитные диски Оперативная память Центральный процессор Сеть Принтеры Ресурсы

Основные компоненты UNIX

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

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

Вход и выход из системы login: user1 Вход в систему Password:Входные сообщения Welcome to HP-UX Erase is backspace Kill is CTRL-U $ dateВыполнение Fri Jul 1 11:03:42 EDT 1994требуемых действий $ другие команды $ exit или + Выход из системы login:

Интерпретатор Shell Shell Выполнение команд Выполнение команд Средства настройки среды Средства настройки среды Назначение переменных Назначение переменных Подстановка переменных Подстановка переменных Генерация имен файлов Генерация имен файлов Интерпретируемый язык программирования Интерпретируемый язык программирования Подстановка команд Подстановка команд Конвейеры Перенаправление ввода/вывода Перенаправление ввода/вывода

Формат командной строки Синтаксис: $ команда [-опции] [аргументы] Примеры $ date Аргументы отсутствуют Fri Jul 1 11:10;45 EDT 1995 $ echo hello! Один аргумент hello! $ echohello! Неверный синтаксис sh: echohello!: not found $ ls -F Одна опция dira/dirb/f1f2prog1*prog2*

Вторичное приглашение к вводу $ echo Hello, Ввод открывающегося апострофа > world! Закрывающий апостроф Hello, world! $ ( Ввод открывающей скобки > + $ stty -aО пределяет управляющую последовательность для прерывания команд

Справочник Справочник HP-UX содержит: РазделОписание Раздел 1Команды пользователя Раздел 1mКоманды обслуживания системы Раздел 2Системные вызовы Раздел 3Функции и библиотеки модулей Раздел 4Форматы файлов Раздел 5Смешанные темы Раздел 7Файлы устройств (специальные файлы) Раздел 8Глоссарий

Содержание страниц справочника NAMEEXAMPLES SYNOPSYSWARNINGS DESCRIPTIONDEPENDENCIES EXTERNAL INFLUENCEAUTHOR NETWORKING FEATURESFILES RETURN CODESEE ALSO DIAGNOSTICSBUGS ERRORSSTANDART CONFORMANCE

Оперативный справочник Синтаксис: man [-k|X] ключевое_слово|команда где X-номер одного из разделов справочника Примеры: $ man dateВыводится описание команды «date» $ man -k copyВыводятся статьи с ключевым словом «copy» $ man passwdВыводится статья «passwd» - раздел 1 $ man 4 passwdВыводится статья «passwd» - раздел 4 - вывести следующую страницу - вывести следующую строку - выйти из команды man

Множественность статей в справочнике whereis команда $ whereis passwd passwd: /sbin/passwd /usr/bin/passwd /usr/share/man/man1.Z/passwd.1 /usr/share/man/man4.Z/passwd.4 $ whereis nothere nothere:

Команда id Синтаксис: idВыводит идентификатора пользователя и его группы для данного сеанса связи Примеры: $ id uid=303 (user3) gid =300 (class) /etc/passwd файл с пользовательскими идентификаторами /etc/group файл с идентификаторами групп

Команда who Синтаксис: who [am i]Сообщает информацию о пользователях, who amiработающих в системе Примеры: $ who roottty1p5 Jul 01 08:01 user1tty1p4 Jul 01 09:59 user2tty0p3Jul 01 10:01 $ who am i user2tty0p3Jul 01 10:01 $ whoami user2

Команда date Синтаксис: date Выводит дату и время Примеры: $ date FriJul 01 11:15:55 EDT 1994 Примечание: Системную дату и время может изменить только администратор системы

Команда passwd Синтаксис: passwd Назначает входной пароль Примеры: $ passwd Changing password for user3 Old password: New password: Re-enter new password: Ограничения при задании пароля: минимум шесть символов по крайней мере две буквы по крайней мере один не буквенный символ

Команда echo Синтаксис: echo [arg]Отображает свои аргументы на экран терминала Примеры: $ echo how are you how are you $ echo 123 abc 123 abc

Команда banner Синтаксис: banner [arg]Выводит на экран аргументы заглавными буквами Примеры: $ banner hеllo

Команда write Синтаксис: write username [tty]Посылает сообщение пользователю username, если он работает в системе Пример: user1user2 $ write user2Message from user1 (tty05)Are you going to the meeting? $ write user1 I will be there + Message from user2 (tty04) I will be there It is fine + Message from user1 (tty05) It is fine

Команда mesg Синтаксис: mesg [y|n]Разрешает или запрещает «писать» на терминал Примеры: $ mesg is y $ mesg n $ mesg is n $ mesg y $ mesg is y

Команда mail Синтаксис: mail Чтение приходящей почты mail username [username]Отправление почты пользователю username Примеры: $ mailЧтение приходящей почты From user4 Fri Jul 1 8:12 EDT 1994Содержание почтового сообщения Are you available for lanch today? ? dПриглашение и команда удаления сообщения $ mail user4 Отправление почты пользователю user4 Hi there! Содержание почтового сообщения I will meet you at 12:00 for lanch. + Завершение сообщения $

Утилита mail Команды ? Помощь q Выход из утилиты x Выход без изменения содержимого почтового ящика d Уничтожение предыдущего сообщения s [file] Сохранение сообщения в файле (по умолчанию файл с именем mbox Вывод на экран следующего сообщения + Вывод на экран следующего сообщения - Вывод на экран предыдущего сообщения !cmd Выполнение команды системы UNIX, не выходя из утилиты mail

Команда mailx Позволяет отвечать на почту Дает возможность манипулировать сообщениями, используя их порядковые номера Добавляет заголовок к почтовому сообщению

Команда news Синтаксис: news [-a] [-n] [headline]Выводит на экран терминала новости системы Примеры: $ newsВыводит последние новости $ news -aВыводит все новости $ news - n Выводит заголовки новостей

Модуль 3. Файловая система

Иерархия файловой системы / sbintmpstandvaroptetcdevusrhome grouppasswd.profilevmunix user3user2user1 mailnewstmpvue contribbinliblocalsbinsharevue man cplsmanshtarvi - файл - каталог

Маршрутные имена файлов / tmpusrhome user1user2user3 f1 memo Абсолютные маршрутные имена файлов полностью определяет местоположение всегда начинаются от корня всегда начинаются знаком / не зависят от текущего положения пользователя уникальны по отношению ко всей иерархической структуре /home/user3/f1 /home/user3/memo/f1 Относительные маршрутные имена файлов начинаются от текущего положения пользователя никогда не начинаются знаком / уникальны только по отношению к текущему положению обычно короче, чем абсолютное маршрутное имя user3/f1 user3/memo/f1 f1

Особые каталоги / tmpusrhome user1user2user3 f1 memo Входной каталог создается при добавлении пользователя обычно является подкаталогом /home Точка (.) представляет текущий каталог Если текущий каталог /home/user3, то. - текущий каталог. /f1 - /home/user3/f1. /memo/f1 - /home/user3/memo/f1 Две точки (..) представляет родительский каталог для корневого каталога (/).. ссылается на себя Если текущий каталог /home/user3, то.. - /home../.. - /.. /user2 - /home/user2

Основные команды файловой системы pwdВыводит имя текущего каталога lsВыводит список файлов и каталогов, находящихся в текущем каталоге cdИзменяет текущий каталог пользователя findОсуществляет поиск файлов mkdirСоздает каталог rmdirУдаляет каталог

Команда pwd Синтаксис: pwd Выводит имя рабочего каталога Примеры: / tmpusrhome user1user2user3 f1 memo $ pwd /home/user3

Команда ls Синтаксис: ls [-adlFR] [маршрутное имя(имена)] -выводит содержимое каталога если команда вводится без аргументов, выводятся имена файлов и каталогов, находящихся в текущем каталоге в качестве аргументов можно указывать и относительные и абсолютные маршрутные имена файлов допускается задание ряда опций: -a - выводит имена всех файлов, в том числе невидимых(начинаются с точки(.)) -d - вычисляет характеристики каталога вместо представления его содержимого -l - представляет полный перечень атрибутов каждого файла (тип, права доступа, количество ссылок, владелец, группа, размер в байтах, дата последней модификации, имя) -F - добавляет знак / к имени каждого каталога и * к имени каждого исполняемого файла -R - рекурсивно перечисляет файлы в данном каталоге и во всех его подкаталогах

Сокращения команд в HP-UX Команда системы UNIXЭквивалент в HP-UX ls -Flsf ls - lll ls - Rlsr

Команда cd Синтаксис: cd [имя каталога] Изменяет текущий каталог имя каталога - абсолютное или относительное маршрутное имя каталога, в который надо перейти если команда вызвана без аргументов, пользователь окажется в HOME- каталоге

Команда find Синтаксис: find список_имен выражение Осуществляет упорядоченный поиск в файловой системе список_имен - список имен каталогов, в которых осуществляется поиск выражение - задает критерий поиска и действия ключевым словам в выражении предшествует знак - Примеры $ find. -newer f1 Найти в текущем каталоге файлы, более новые чем f1

Команды mkdir и rmdir Синтаксис: mkdir [-p] имя(имена)_каталога Создание каталога [-p] - создаются промежуточные каталоги, если они до этого не существовали rmdir [-i] имя(имена)_каталога У даление каталога удаляемые каталоги должны быть пустыми нельзя удалить каталог между текущим и корневым [-i] - удаление с подтверждением rm -r имя_каталога - удаление непустого каталога

Файловая система - краткое резюме Файл Контейнер для данных Каталог Контейнер для файлов и других каталогов ДеревоИерархическая структура UNIX системы МаршрутноеИдентифицирует положение файла или каталога имя в иерархии HOMEМаршрутное имя входного каталога пользователя pwdВыводит на экран текущий каталог cdИзменяет текущий каталог lsВыводит содержимое каталога findОтыскивает файлы, специфицируемые опциями mkdirСоздает каталоги rmdirУдаляет каталоги

Модуль 4. Управление файлами

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

Что можно делать с файлами? lsПросмотр характеристик файла catПросмотр содержимого файла moreПоэкранный просмотр содержимого файла lpПечать файла cpКопирование файла mvИзменение имени файла Перемещение файла в другой каталог lnСоздание ссылки на файл (файла псевдонима) rmУдаление файла

Характеристики файлов $ ls -l -rw- r--r-- 1 user3 class 37 Jul 24 11:06 f1 -rwxr-xr-x 1 user3 class 52 Jul 24 11:08 f2 drwxr-xr-x 2 user3 class 1024 Jul 24 12:03 memo тип ссылкигруппадата имя файла файлавладелец модификации файла режим доступа размер файла к файлу

Типы файлов -Обычный файл dКаталог lСимволическая ссылка nСетевой специальный файл cБайт-ориентированный специальный файл (терминалы, принтеры) bБлок-ориетированный специальный файл (диски) pИменованный канал (канал внутри межпроцессорного взаимодействия)

Команда cat Синтаксис: cat [файл] Объединяет и выводит содержимое файла Примеры $ cat f1 Вывод на экран содержимого файла f1 $ cat f1 f2 Вывод на экран содержимого файлов f1 и f2 $ catВвод с клавиатуры abs + abc $ cat f1 f2 > f3Перенаправление вывода файлов f1 и f2 в f3

Команда more Синтаксис: more [файл]... Осуществляет поэкранный вывод содержимого файла Примеры $ more f1 … --f1 (20%)-- или Выход из команды more Вывод очередной строки Вывод очередного экрана с информацией

Команда tail Синтаксис: tail [-n] [имя_файла]... Вывод последних n строк файла(ов) Примеры $ tail -1 note soon as it is available

Система спулинга строчных принтеров Система спулинга строчных принтеров (lp spooler) - утилита, координирующая работу принтера. Функции системы спулинга –Организация очереди файлов к принтерам. –Определение состояния принтеров и запросов к ним. –Прерывание любого задания для принтера. Пользователь 1 Пользователь 2 … Пользователь n Система спулинга строчных принтеров (lp spooler) Вывод Принтер

Команда lp Организует очередь файлов, подлежащих выводу на печать. Назначает уникальный числовой идентификатор (ID) запросу в очереди. Обладает рядом опций для настройки маршрутизации и режима печати. Синтаксис: lp [-dпринтер] [-опции] имя_файла... Примеры $ lp file1 request id is dp-112 (1 file) $ lp -n2 file1 file2 request id is dp-113 (2 file) $ lp -dlaser -tconfidential-n2 file1 file2 request id is laser-114 (1 file)

Опции команды lp lp [-dпринтер] [-nчисло] [-oопция] [-tзаголовок] [-w][имя_файла...] -dпринтер Имя принтера, при отсутствии поставит документ в очередь к принтеру, назначенному в системе принтером по умолчанию -nчисло Число копий, по умолчанию 1 -tзаголовок Печать заголовка на титульном листе -oопция Указание опций, специфических для принтера ( тип шрифта, шаг печати, толщина линий, структурированность данных и т.д.) -w Выдача сообщения на терминал пользователя после распечатки

Команда lpstat Синтаксис: lpstat [-t] Команда lpstat сообщает о запросах, поставленных в очередь на печать Команда lpstat -t сообщает состояние планировщика заданий, имя пнинтера по умолчанию, состояние принтера и список всех запросов, стоящих в очереди на печать.

Команда lpstat Примеры: $ lpstat rw-55 john 4025 Jul 6 14:26: $ $ lpstat -t scheduler is running system default destination: rw device for rw: /dev/lp2235 rw accepting requests since Jul 1 10:56: printer rw now printing rw-55. enabled since Jul 4 14:32: rw-55 john 4025 Jul 6 14:26: on rw rw-56 root 966 Jul 6 14:27: $

Команда cancel Синтаксис: cancel идентификатор [идентификатор...] cancel принтер [принтер...] Примеры: Отмена задания, поставленного в очередь командой lp $ cancel dp-115 Отмена текущего задания на указанном принтере $ cancel laser

Команда cp Синтаксис: cp [-i] файл вых_файл Копирование файла cp [-i] файл [файл...] вых_каталог Копирование файлов в каталог cp -r [-i] каталог [каталог...] вых_каталог Копирование каталогов Требуется указать как минимум два аргумента - источник и преемник Для любого из аргументов допустимо использование относительных и/или абсолютных маршрутных имен. Если файл-преемник не существует, он будет создан. Если преемник - каталог, файл будет скопирован в него с сохранением имени. Опция -i приводит к выдаче предупреждения о том, что файл-преемник уже существует и может быть изменен При копировании нескольких файлов преемником должен быть каталог. Файл не может быть скопирован сам в себя. Опция -r должна быть использована при копировании каталогов.

Команда mv Синтаксис: mv [-i] файл новый_файл Переименование файла mv [-i] файл [файл...] вых_каталог Перемещение файлов в каталог mv [-i] каталог [каталог...] вых_каталог Переименование или перемещение каталогов Требуется указать как минимум два аргумента - источник и преемник Для любого из аргументов допустимо использование относительных и/или абсолютных маршрутных имен. Если файл-преемник уже существует, его содержимое будет заменено содержимым файла-источника. Если преемник - каталог, файл будет скопирован в него с сохранением имени. Опция -i приводит к выдаче предупреждения о том, что файл или каталог- преемник уже существует и может быть изменен При перемещении нескольких файлов преемником должен быть каталог. Если в качестве источника указан каталог, он переименовывается и получает имя преемника.

Команда ln Синтаксис: ln файл новый_файл Создание ссылки на файл ln файл[файл...] вых_каталогСоздание ссылок на файлы в каталоге Примеры $ ls -l f1 -rw-rw-r-- 1 user3 class 37 Jul 24 11:06 fl $ ln fl /home/user2/fl.link $ ls -l fl -rw-rw-r-- 2 user3 class 37 Jul 24 11:06 fl $ ls -1 /home/user2 -rw-rw-r-- 2 user3 class 37 Jul 24 11:06 fl.link / home user3user2 f1.linkf1 Это файл, к которому можно обращаться по нескольким именам Пользователь находиться здесь

Команда rm Синтаксис: rm [-if] имя_файла [имя_файла]... Удаление файлов rm -r[if] каталог [имя_файла...] Удаление каталогов -fБезусловное удаление поименованных в команде файлов -rРекурсивно удаляется содержимое каталогов, указанных в командной строке -iРежим интерактивного удаления Примеры $ ls -F $ rm -i f2 f1 f2 fruit/memof2? y $ rm f1$ rm fruit $ ls -Frm: fruit directory f2 fruit/memo $ rm -r fruit

Список команд управления файлами и каталогами ls -lВыводит характеристики файла catОбъединяет и выводит на экран содержимое нескольких файлов moreФорматирует и выводит на экран содержимое файлов tailВыводит на экран окончание файла cpКопирует файлы и каталоги mvПеремещает или переименовывает файлы и каталоги lnСоздает ссылки на файл rmУдаляет файлы или каталоги lpПосылает запросы на вывод информации на принтеры lpstatВыводит состояние системы спулинга cancelОтменяет исполнение запросов, стоящих в очереди к принтеру

Модуль 5. Доступ к файлам

PermissionПрава на чтение, запись, выполнение файла ls (ll, ls -l)Определение прав доступа, установленных для файла chmodИзменение прав доступа к файлу umaskИзменение прав доступа, назначаемых по умолчанию chownИзменение владельцев файла chgrpИзменение группы файла suИзменение идентификатора пользователя newgrpИзменение идентификатора группы пользователя

Кто имеет доступ к файлу? Тройственная структура, определяющая доступ к файлу или каталогу userВладелец файла groupГруппа пользователей, которая может иметь доступ к файлу otherВсе другие категории пользователей Команда ls -l выводит на экран идентификаторы пользователя - владельца файла и группы, которая имеет доступ к файлу $ ls -l -rw- r--r-- 1 user3 class 37 Jul 24 11:06 f1 -rwxr-xr-x 1 user3 class 52 Jul 24 11:08 f2 drwxr-xr-x 2 user3 class 1024 Jul 24 12:03 memo Владелец Группа

Типы доступа Для каждого файла или каталога возможны три типа доступа: -Read (чтение) Может быть просмотрено содержимое файлов или каталогов -Write (запись) Содержимое файлов или каталогов может быть изменено -Execute (выполнение) Файл может использоваться как команда. Каталог может стать текущим рабочим каталогом

Права доступа к файлам Права доступа к файлам выводятся на экран командой ls -l $ ls -l - rw- r-- r-- 1 user3 class 37 Jul 24 11:06 f1 - rwx r-x r-x 1 user3 class 52 Jul 24 11:08 f2 d rwx r-x r-x 2 user3 class 1024 Jul 24 12:03 memo Права владельца Группа файла Права группы Владелец файла Права остальных пользователей

Команда chmod Синтаксис: chmod режим_доступа файл... Изменение прав доступа к файлу(ам) режим_доступа [кто[оператор]право][...] ктовладелец (user), группа (group), остальные (other) или все (all) оператор+ (добавить), - (отнять), = (присвоить) правочтение (read), запись (write), выполнение (execute)

Команда chmod Примеры Исходные права:режим владелецгруппа остальные rw-r--r-- rw- r-- r-- $ chmod u+x,g+x,o+x file Новые права:режим владелецгруппа остальные rwxr-xr-x rwx r-x r-x $ chmod +x file chmod = имя_файла Удаление всех прав доступа к файлу $ chmod о= file Новые права:режим владелецгруппа остальные rwxr-xr-x rwx r-x ---

Команда chmod Примеры /dev/tty0p1 - файл устройства, отвечающий за связь терминала пользователя с компьютером $ ls -l /dev/tty0p1 crw--w--w- 1 bin bin 58 ox Feb 15 11:34 /dev/tty0p1 $ mesg n $ ls -l /dev/tty0p1 crw bin bin 58 ox Feb 15 11:34 /dev/tty0p1

Команда chmod. Задание прав доступа в числовом формате 1. Каждое право доступа обозначается следующими числами: read=4 write=2 execute=1 2. Числа складываются для каждой категории пользователей (владельца, группы, остальных) и объединяются в трехразрядное число. Примеры 1.usergroupothers rw-r chmod 640 имя_файла 2. chmod 000 имя_файлаОтмена всех прав доступа к файлу

Команда umask Синтаксис: umask [-S] [режим_доступа]... Пользовательская маска создания файла Примеры права доступа по умолчанию:rw-rw-rw- установка новых прав доступа по умолчаниюrw-r--r-- $ umask g=r, o= $ umask -SВывод текущей маски создания файла в символьном представлении

Команда touch Синтаксис: touch [-amc] [-t время] имя_файла... Обновляет время последнего доступа и/или модификациии файла Опции: -a [время] Установить время последнего доступа к файлу равным время -m [время] Установить время последней модификации файла равным время -c Если файл не существует, не создавать его -t время Использовать время вместо текущего время [[cc]yy]mmddhhmm[.ss]

Команда touch Примеры: $ ll -rw-r--r-- 1 karenk users Aug 2409:53 firstfile -rw-r--r-- 1 karenk users Aug 2409:53 secondfile $ touch newfile $ ll -rw-r--r-- 1 karenk users May 2409:53 firstfile -rw-r--r-- 1 karenk users 0 Aug 2510:02 newfile -rw-r--r-- 1 karenk users Aug 2409:53 secondfile $ touch secondfile $ ll -rw-r--r-- 1 karenk users May 2409:53 firstfile -rw-r--r-- 1 karenk users 0 Aug 2510:02 newfile -rw-r--r-- 1 karenk users Aug 2510:05 secondfile $

Команда touch Примеры: $ touch test_filel $ ls -1 test_filel -rw-rw-rw- 1 user3 class 0 Jul 24 11:08 test_filel $ umask a-rwx,u=rw,g=r $ umask -S u=rw,g=r,o= $ touch test_file2 $ ls -1 test_file2 -rw-r user3 class 0Jul 24 11:10 test_file2

Команда chown Синтаксис: chown владелец [:группа] имя_файлаИзменение владельца файла и, дополнительно, группы Пример: $ id uid=303 (user3), gid=300 (class) $ cp fl /home/user2/fl $ ls -1 /home/user2/fl -rw-r user3 class 3967 Jan 24 13:13 fl $ chown user2 /home/user2/fl $ ls -1 /home/user2/fl -rw-r user2 class 3967 Jan 24 13:13 fl Только владелец файла (или суперпользователь) может изменить владельца файла.

Команда chgrp Синтаксис: chgrp новая_группа имя_файлаИзменяет права доступа группы к файлу Только владелец файла (или суперпользователь) может изменить группу файла. Пример: $ id uid=303 (user3), gid=300 (class) $ ls -1 f3 -rw-r-- 1 user3 class 3967 Jan 24 13:13 f3 $ chgrp class2 f3 $ ls -l f3 -rw-r user3 class Jan 24 13:13f3 $ chown user2 f3 $ ls -l f3 -rw-r user2 class Jan 24 13:13f3

Команда su Синтаксис: su [имя_пользователя]... Изменение ранее назначенного идентификатора пользователя Примеры $ ls -1 /usr/local/bin/class_setup -rwxr-x--- 1 class_admin teacher 3967 Jan2413:13f3 $ id uid=303 (user3), gid=300 (class) $ su class_admin Password: $ id uid=400 (class_admin), gid=300 (class) $ /usr/local/bin/class_setup $ + log out of su session $

Команда newgrp Синтаксис: newgrp [имя_группы]... Изменяет идентификатор группы Примеры $ ls -1 /usr/ local/bin/class_setup -rwxr-x--- 1 class_admin teacher 3967 Jan 24 13:13f3 $ id uid=303 (user3), gid=300 (class) $ newgrp teacher $ id uid=303 (user3), gid=33 (teacher) $ /usr/local/bin/class_setup $ newgrp return to login group status $ newgrp other Sorry $

Списки управления доступом ACL Синтаксис: lsacl имя_файла Выводит ACL для файла chacl [-d] ACL имя_ файла Изменяет ACL для файла Примеры: $ lsacl funfile (user3.%,rw-)(%.class,r--)(%.%,r--) funfile $ chacl "user2.class=rw,%.%-r" funfile $ lsacl funfile (user2.class,rw-)(user3.%,rw-)(%.class,r--)(%.%,---) funfile $ chacl -d "user2.class" funfile $ ll funfile -rw-r--r-- 1 user3 class 3081 May 28 16:12 funfile $ lsacl funfile (user3.%,rw-)(%.class,r--)(%.%,---) funfile

Списки управления доступом ACL Уровни управления доступом Существуют четыре базовых уровня, которые могут определять доступ к файлу: (u.g,rwx) Указанный пользователь, указанная группа (u.%,rwx) Указанный пользователь, любая группа (%. g, rwx) Любой пользователь, указанная группа (%. %, rwx) Любой пользователь, любая группа

Списки управления доступом ACL Пример $ lsacl funfile (user3.%,rw-) (%.class, r--) (%.%,r--) funfile В приведенном ниже примере для user2 из группы class будет создан ACL, обеспечивающий право на чтение и запись и исключающий право на чтение для всех пользователей и групп (%.%): $ chacl "user2.class,rw-,%.%,-r" funfile $ lsacl funfile (user2.class,rw-)(user3.%,rw-)(%.class,r--) (%.%,---) funfile To же самое могло быть реализовано с помощью следующей команды: $ chacl "(user2.class,rw) (%.%-r)" funfile В данном примере для user2 из группы class ACL будет удален: $ chacl -d "user2.class" funfile $ lsacl funfile (user3.%,rw-)(%.class,r--) (%.%,---) funfile

Доступ к файлам - резюме PermissionПрава на чтение, запись, выполнение файла ls (ll, ls -l)Определение прав доступа, установленных для файла chmodИзменение прав доступа к файлу umaskИзменение прав доступа, назначаемых по умолчанию chownИзменение владельцев файла chgrpИзменение группы файла suИзменение идентификатора пользователя newgrpИзменение идентификатора группы пользователя Все каталоги, входящие в полное маршрутное имя файла, должны иметь право на выполнение. С целью защиты файла, удаляйте право на запись в этот файл и каталог, в котором он находится. Только владелец пользователя (или суперпользователь) может изменить для него права доступа, владельца или группу.

Модуль 6 Введение в редактор vi

William Joy, Калифорнийский университет vi - это экранный текстовый редактор поставляется в большинстве версий системы UNIX управляется командами включает следующие классы команд: –общеорганизующие –управления курсором –вставки текста –удаления текста –вставки ранее удаленного текста –изменения текста Что представляет собой редактор vi?

vi: Начало сеанса работы Синтаксис: vi [имя_файла] Начало сеанса редактирования файла Примеры $ vi file1 file1 vi file1 Диск file1 Keyboard Все изменения при редактировании выполняются над копией файла, размещенной в оперативной памяти

vi: Режимы работы редактора Командный режим - нажатия клавиш интерпретируются как команды –исходным является режим, когда начинается сеанс vi редактирования –нажатие клавиши переводит вас в командный режим –vi команды не отражаются на экране –ex команды префиксируются двоеточием(:) и отображаются на экране Режим ввода - информация, соответствующая нажатым клавишам вводится в файл Режим последней строки Командный режим Режим ввода :/?:/? Return i I a A o O ESC

Это пример содержимого файла test, который будет рассматриваться далее ~ ~ Пометки строк, ~ которые не существуют ~ в файле ~ : ex командысообщения о режиме работы vi: Сеанс редактирования содержимое файла строки в конце файла курсор

vi:Завершение сеанса редактирования ZZ Сохранение файла на диске (на экране не отображается) :wq! Сохранение файла на диске и выход из редактора :q! Выход без сохранения

Команды управления курсором (1) h или Перемещение курсора на одну позицию влево j Перемещение вниз на одну строку k Перемещение вверх на одну строку l или Перемещение курсора на одну позицию вправо #w Перемещение вперед на слово (word) за словом #b Перемещение назад на слово (backword) за словом #e Перемещение к концу (end) следующего слова $ Перемещение в конец текущей строки ^ или 0 Перемещение в начало текущей строки

Команды управления курсором (2) GПереход (Go) в конец файла #GПереход (Go) на строку с номером # :#Переход на строку с номером # + Вывод номера текущей строки Переход к первому непустому символу на следующей строке + Вывод предыдущего (back) содержимого экрана + Вывод следующего (forward) содержимого экрана + Возврат вверх (up) на половину экрана + Переход вниз (down) на половину экрана LПереход к последней (last) строке экрана MПереход к средней (middle) строке экрана HПереход к первой строке экрана (на первую строку, первый символ) + Перерисовка экрана

Режим ввода Для переключения в режим ввода используются следующие команды: aДобавление (append) текста после курсора iДобавление (insert) текста перед курсором OОткрытие (Open) пустой строки над текущей строкой oОткрытие (open) пустой строки под текущей строкой A Добавление (Append) текста в конец строки I Вставка (Insert) текста с начала строки В режиме ввода: Появление новой пустой строки (можно разрезать строки) Возвращение влево для исправления введенного Окончание режима ввода. Возвращение в командный режим

Удаление текста: команды x,dw,dd,dG #xУдаление (X out) символа над курсором #dw Удаление (Delete) текущего слова (Word) #ddУдаление текущей строки dGУдаление всех строк от текущей до последней строки файла d$Удаление конца строки (от текущей позиции) d^Удаление начала строки (до текущей позиции) Можно задать число, показывающее сколько раз должна быть повторена команда. Например: 3dd - удалить 3 строки

Команды отмены произведенных изменений u Отмена (undo) последнего изменения U Отмена (Undo) всех изменений в текущей строке

Перемещение текста: команды p и P. dобъектУдаление объекта и сохранение его в буфере pВставка (paste) содержимого буфера в текст после курсора PВставка (Paste) содержимого буфера в текст перед курсором

Копирование текста: команды yw, yy #ywКопирование (yank) текущего слова в буфер #yyКопирование текущей строки yGКопирование строк от текущей до конца файла y$Копирование части строки от курсора до конца строки y^ Копирование части строки от курсора до начала строки Список команд копирования и вставки yобъектКопирование (yank) объекта в буфер pВставка (paste) содержимого буфера в текст после курсора PВставка (Paste) содержимого буфера в текст перед курсором

Изменение текста: команды r, R, cw,. rсимволЗаменяет (replace) символ, помеченный курсором на символ RЗаменяет (Replace) все символы строки, пока не нажата клавиша #сwИзменение текущего слова #ccИзменение всей текущей строки cGИзменение всех строк файла от текущей до последней c$Изменение части строки от курсора до конца строки c^Изменение части строки от курсора до начала строки. Повтор последнего действия по изменению текста, включая удаление

Поиск текста: команды /, n, N /текстПоиск строки, содержащей заданный текст, начиная от текущей строки до конца файла с переходом на начало файла ?текст Поиск строки, содержащей заданный текст, начиная от текущей строки до начала файла с переходом на конец файла nПоиск следующего вхождения в файл заданной строки текста NПоиск предыдущего вхождения в файл заданной строки текста

Поиск текста по шаблону [o0]ld_textПоиск old_text или 01d_text. ^текстПоиск строки начинающейся с текста текст$Поиск строки заканчивающейся на текст.Поиск по любому одиночному символу. символ*Поиск по символу, который может не встретиться ни разу или любое число раз.. *Поиск по любому символу, который может не встретиться ни разу или любое число раз.

Список регулярных выражений (шаблонов для поиска) [a-z A-Z 0-9] Определяет класс символов, из которого формируется образец для сопоставления. Знак "тире" () означает допустимый диапазон символов. Квадратные скобки [] определяют только один символ. ^текст Текст от начала строки. текст$Текст от конца строки..Соответствует любому одному символу. символ*Определяет ноль или любое число повторений символа

Примеры составления шаблонов / [Tt]he Поиск очередной строки со словом "The" или "the" / [o0] [nN] [eE] Поиск строки со словом "one", написанным любым из указанных типом символов вне зависимости от позиции в слове (т. е. oNe, One, oNE и т.п. одно и то же) /bo*t Поиск строки, содержащей символ b", за которым может быть ноль или любое количество символов "о", за которым, в свою очередь, следует символ "t". Т.е. подходящими окажутся такие слова: "bt", "bottom", "boot", "booot" и т. д. /^ [abc]. * Поиск очередной строки, начинающейся символом "а", " b" или "с". Т. е. это надо понимать так, что подойдет любая строка, начинающаяся с символа "а", "Ь" или "с", вне зависимости от того есть или нет за любым из них какой-либо символ (символы) /finally.$ Поиск очередной строки, оканчивающейся на слово "finally", за которым следует любой символ. Т. е. подойдет любая из строк, оканчивающаяся следующим образом: «finally.», «finnallyA», «finallyZ»

Глобальный поиск и замена - команды ex :m,ns/шаблон/новый_текст/[g] Примеры :1, $s/one/two/ В каждой строке, с первой по последнюю ($), заменить только первое вхождение слова one на слово two :.,10s/[oO] [nN] [eE]/two/g Во всех строках, начиная с текущей по 10-ю, заменить каждое вхождение one, причем не важно строчными и.или прописными символами оно представлено, на слово two

Глобальный поиск и замена - команды ex :m,ns/шаблон/новый_текст /[g] m,nОпределяют строки файла, которые обрабатываются командой sОзначает выполнение команды замены (substitute) шаблонУказывает образец текста для выполнения поиска новый_текст Указывает текст, на который заменяется текст, найденный по образцу gЗадает выполнение команды глобально (globally) в строке

Команды ex :wзапись текущего содержимого буфера на диск :m,nw файлзапись строк с m-ой по n-ую из текущего буфера в файл :w файл запись текущего буфера в файл :e файлзагрузка файла в буфер редактирования, замещающего старое содержимое буфера :e !отмена всех изменений в буфере перезагрузкой в него файла с диска :r файл добавление содержимого файла после текущего положения курсора :! chmвыполнение команды chm :set allвывод всех опций сеанса редактирования :set nuвключение опции нумерования строк :set nonu выключение опции нумерования строк

Команды ex :set опциявключение опции режима редактирования :set noопция выключение опции режима редактирования :set allвывод всех опций сеанса редактирования : mapотображение на экране клавиш, используемых в командном режиме :map!отображение на экране клавиш, используемых в режиме ввода Пример :set showmodвключение вывода сообщения о режиме работы :set noshowmodвыключение вывода сообщения о режиме работы

Модуль 7. Shell: основы

Что такое Shell? Выполнение команд Выполнение команд Средства настройки среды Средства настройки среды Назначение переменных Назначение переменных Подстановка переменных Подстановка переменных Генерация имен файлов Генерация имен файлов Интерпретируемый язык программирования Интерпретируемый язык программирования Подстановка команд Подстановка команд Конвейеры Перенаправление ввода/вывода Перенаправление ввода/вывода Shell Ядро ОС Аппаратура Shell Пользователи

Возможности POSIX shell'a Интерфейс пользователя с расширенными возможностями -Установка псевдонимов команд - Автоматическое завершение имен файлов - Механизм буферирования команд - Повторный вызов и редактирование командных строк - Управление заданиями - Расширенные возможности команды cd - Расширеннные возможности программирования

Установка и отмена псевдонимов команд Синтаксис: alias [имя[=строка]]установка псевдонима unalias имя отмена псевдонима Примеры: $ alias dir=ls $ alias mroe=more $ alias mstat=/home/tricia/projects/micron/status $ alias laser="lp -dlaser" $ laser fileX request id is laser-234 (1 file) $ alias выводит установленные псевдонимы команд …. $ alias mroe выводит псевдоним команды mroe mroe=more

Автоматическое завершение имен файлов $ more fra $ more frankenstein …….. $ more abc $ more abcdef = 1)abcdefXlmnop 2)abcdefYlmnop $ more abcdef Введите для добавления, затем X или Y, после чего нажмите. Соответствующее имя файла будет автоматически завершено shell'ом

Автоматическое завершение имен файлов(2) $ cd tr do r $ cd tree/dog.breads/retriiver

Буферирование команд Shell сохраняет команды, которые вводит пользователь в файле предыстории Команда history выводит на экран последние 16 введенных команд Ранее введенные команды можно вызвать повторно, отредактировать и запустить вновь Синтаксис: history [-n|a z] Вывод на экран предыстории команд Пример: $ history -2 Выдача списка из последних двух команд 15 cd 16 more.profile $ history 3 5 Вывод списка команд с номерами от 3 до 5 3 date 4 pwd 5 ls

Буферирование команд(2) Опции: -nвывод n последних команд a z вывод команд с номерами от a до z Переменные HISTSIZEколичество доступных пользователю ранее вводимых команд (по умолчанию 128) HISTFILE определяет имя текстового файла, создаваемого лоя хранения вводимых команд (по умолчанию.sh_history)

Повторный ввод команд Для повторного ввода предшествующей команды с номером с следует ввести команду г с Пример: $ history 3 5 Вывод на экран списка команд с номерами от 3 до 5 3 date 4 pwd 5 ls $ r 4 Запуск команды с номером 4 pwd /home/kelley

Повторный ввод команд(2) Вместо номера команды можно ввести первый символ имени команды, в результате будет выполнена последняя команда, хранящаяся в буфере предыстории, начинающаяся с этого символа Пример: $ history 1 date 2 cat file1 3 ll $ r d Mon Jul 4 10:05:

Повторный вызов команд Используется механизм буферирования команд Должны быть установлены EDITOR-переменные среды: $ EDITOR=/usr/bin/vi $ export EDITOR - В ответ на приглашение $, нажмите и используйте обычные команды редактора vi для просмотра ранее введенных команд: ·k - просмотр буфера команд назад ·j - просмотр буфера команд вперед · nG - выдача на экран командной строки с номером п - Нажмите для исполнения команды

Редактирование командной строки Обеспечивается возможность изменять текущую или ранее введенную командную строку Нажмите клавишу для входа в командный режим Вызовите требуемую команду - нажимая клавишу пока команда не появится на экране - вводя номер команды, а затем G Для редактирования командной строки используйте команды редактора vi Не используйте клавиши со стрелками Нажмите для запуска модифицированной команды

Среда пользователя Среда пользователя описывает сеанс работы с системой для программ, которые он запускает. Синтаксис: env Пример: $ env НОМЕ=/home/gerry EDITOR=vi TERM=70092 … PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin:\ /home/gerry/bin

Среда пользователя(2) Среда пользователя содержит следующую информацию: Маршрутное имя начального каталога пользователя Куда посылать электронную почту пользователя Часовой пояс, в котором работает пользователь Где shell будет искать команды Тип терминала и размеры его экрана

Среда пользователя(3) Перечень наиболее общих переменных среды и их смысловое содержание TERM, COLUMNS и LINES Описывают параметры используемого терминала HOME Маршрутное имя начального каталога PATH Путь поиска команд LOGNAME Входное имя пользователя, задаваемое при входе в систему ENV и HISTFILE Специальные переменные POSIX shell'a Некоторые из этих переменных устанавливаются для каждого пользователя самой системой, другие устанавливаются явно в /etc/profile или.profile.

Установка переменных shell'a Переменная shell'a имеет имя, которому ставится в соответствие некоторое значение. Значение переменной может быть изменено. Некоторые переменные shell'a определяются в процессе входа пользователя в систему. Пользователь может определить новые переменные shell'a. Синтаксис: name=value Пример: $ PATH=/usr/bin/Xll:/usr/bin

Две важные переменные Переменная PATH - список каталогов, в которых shell ищет вводимые пользователем команды Переменная TERM - описывает для запускаемых пользователем программ тип терминала и размер экрана Пример: $ env PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin TERM=hp

Что происходит при входе в систему? 1. getty выводит содержимое файла /etc/issue выдает приглашение login: запускает процесс login 2. login определяет допустимость введенного имени пользователя и пароля помещает пользователя в начальный каталог запускает shell пользователя 3. shell выполняет /etc/ profile или /etc/csh.login выполняет. profile или. login, находящиеся в пользовательском каталоге выполняет.kshrc если файл создан пользователем и его имя присвоено переменной ENV в файле.profile запускает пользовательский shell

Стартовые файлы shell-a Если shell следующего типа... Локальной входной процедурой является. Korn(/usr/bin/ksh).profile.kshrc Bourne (/usr/old/bin/sh).profile POSIX(/usr/bin/sh).profile.kshrc Restricted (/usr/bin/rsh, /usr/bin/rksh).profile С(/usr/bin/csh).login.cshrc

Внутренние команды shell икоманды UNIX Внутренние команды встроены в shell: set, while, if, for Команды UNIX находятся в /usr/bin: cd ls more file Система находит команды UNIX, используя переменную PATH.

Поиск команд - команда whereis Синтаксис: whereis [-b|-m|-s] команда Просматривает список каталогов для поиска указанной команды Примеры: $ whereis if if : $ $ whereis ls ls: /sbin/ls /usr/bin/ls /usr/share/man/man1.Z/ls.1 $ $ whereis cd cd: /usr/bin/cd /usr/share/man/man1.Z/cd.1 $ $ whereis holdyourhorses holdyourhorses :

Поиск команд - команда whereis(2) Опции -bпоиск только по двоичным кодам -mпоиск по описаниям команды -sпоиск по исходным текстам

Модуль 8. Shell: расширенные возможности

Shell-подстановки Подстановка переменных Подстановка команд Тильда-подстановка Подстановки используются для увеличения скорости ввода и выполнения командных строк.

Shell: хранение переменных color=blue count=3 dir_name=/home/user3/tree PS1=$ PATH=/usr/bin:/usr/contrib/bin HOME=/home/user3 TERM=70094a SHELL=/usr/bin/sh /usr/bin/sh Локальные переменные Программный код Переменные среды

Shell: вывод на экран всех переменных, содержащихся в данный момент в среде $ env MANPATH=/usr/share/man:/usr/contrib/man:/usr/local/man PATH=/usr/bin:/usr/ccs/bin:/usr/contrib/bin:/usr/local/bin LOGNAME=user3 ERASE=^H SHELL=/usr/bin/sh HOME=/home/user3 TERM=hpterm PWD=/home/user3 TZ=PST8PDT EDITOR=/usr/bin/vi

Shell: установка значений переменных Синтаксис: переменная=значение Пример: $ color=lavenderУстановка локальной переменной $ count=3 Установка локальной переменной $ dir_name=tree/car.models/ford Установка локальной переменной $ PS1=hi_there$ Изменение переменной среды

Подстановка переменных Синтаксис: $переменнаяУказывает shellу выполнить подстановку переменной Пример: $ echo PATH$ /usr/bin:/usr/contrib/bin:/usr/local/bin $PATH=$PATH:$HOME:. $ echo PATH$ /usr/bin:/usr/contrib/bin:/usr/local/bin:/home/user3:. $echo $HOME /home/user3 $ file_name=$HOME/file1 $ more $file_name

Использование фигурных скобок ({}) Пусть есть две переменные с именами file и file1. Этим переменным могут быть присвоены значения с помощью следующих операторов: $ file=this $ file1=that $ echo $fileand$file1ищет переменные fileand и file1 sh: fileand: parameter not set $ echo ${file}and$filel thisandthat ищет переменные file и file1 Фигурные скобки могут использоваться для выделения имени переменной из окружающего текста.

Подстановка переменных(2) $ dir_name=tree/car.models/ford $ echo $dir_name tree/car.models/ford $ ls -F $dir_name sedan/ sports/ $ my_ls="ls -aFC" $ $my_ls./ file.1tree/../ file.2 $ $my_ls $dir_name. /.. / sedan/ sports/ $ cd /tmp $ dir_name=/home/user2/tree/dog.breeds/retriever $ $my_ls $dir_name. /.. / golden labrador mixed Использование абсолютного маршрутного имени в качестве значения переменной, которая представляет собой имя файла или каталога, позволяет пользователю вне зависимости от местонахождения в файловой системе, получать доступ к файлу или каталогу

Подстановка команд Синтаксис: $(команда)Указывает shellу выполнить подстановку команды Пример: $pwd /home/user2 $curdir=$(pwd) $echo $curdir /home/user2 $cd /tmp $pwd /tmp $cd $curdir $pwd /home/user2 $curdir2=`pwd` $echo $curdir /home/user2

Тильда-подстановки Если слово начинается со знака "тильда" (~), то для этого слова формируется расширение. Следует заметить, тильда подстановка выполняется только если знак (~) указывается в начале слова, а в случае /~home/users тильда подстановка не осуществляется. Тильдаподстановки выполняются в соответствии со следующими правилами: Отдельный знак (~) или предшествующий знаку (/) заменяется на значение переменной HOME. Тильда с последующим знаком +, заменяется на значение переменной PWD. Переменная PWD устанавливается командой cd при переходе в новый текущий каталог. Тильда с последующим знаком, заменяется на значение переменной OLDPWD. Переменная OLDPWD устанавливается командой cd для предыдущего рабочего каталога Если за знаком тильда следуют несколько символов, а затем символ /, то shell пытается установить не являются ли эти символы именем пользователя в системе. Если это так, топоследовательность символов заменяется маршрутным именем начального каталога пользователя. Символ ~ может быть помещен в псевдоним команды.

Тильда-подстановки -пример $ echo $HOME /home/user3 $ echo ~ /home/user3 $ echo $PWD /home/user3/tree $ ls ~+/poodle /home/user3/tree/poodle $ echo $OLDPWD /home/user3/mail $ ls ~- /home/user3/mail/from.mike /home/user3/mail/from.jim $ echo ~tricia/file1 /home/tricia/file1

Вывод значений переменных env Вывод значений переменной среды. Это команда системы UNIX из каталога /usr/bin/env set Вывод на экран всех определенных к данному времени переменных (локальных и переменных среды), а также их значений. Это команда shell. unset Удаление значения переменной. Это команда shell.

Вывод значений переменных-пример $ echo $HOME /home/user3 $ env HOME=/home/user3 PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin SHELL=/usr/bin/sh $ set HOME=/home/user3 PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin SHELL=/usr/bin/sh color=lavender count=3 dir_name=/home/user3/tree $ unset dir_name

Экспортирование локальных переменных в среду Синтаксис: export [переменная[=значение]] Экспортирование переменной в среду Пример: $ color=lavender $ export color $ export count=3 $ export export PATH=/usr/bin:/usr/ccs/bin:/usr/contrib/bin:/usr/local/bin export color=lavender export count=3 Это встроенная команда shell.

Передача переменных в приложение Процесс - выполняющаяся программа. При вводе пользователем имени приложения (или команды) в ответ на приглашение shell, создается порожденный процесс, который исполняется по шагам: 1. fork - порождает параллельный процесс, который дублирует shell-процесс пользователя, включая код программы и области локальных данных и данных среды. 2. exec - заменяет кодовый сегмент и область локальных данных порожденного процесса на программный код и область локальных данных требуемого приложения., затем выполняет процесс затребованного приложения, возвращает управление родительскому процессу. Существует один путь передачи данных порожденным процессам - через среду.

Наблюдение за процессами ps [-f]выводит на экран информацию о выполняемых (или ожидающих) процессах в системе Выдает: UIDидентификатор владельца процесса PIDидентификатор процесса PPIDидентификатор родителя процесса STIMEначальное время процесса TTYидентификатор терминала, с которого запущен процесс TIME совокупное время выполнения процесса COMMAND команда,соответствующая данному процессу exec команда замещение текущего процесса (это встроенная команда shell).

Наблюдение за процессами $ ps -f UID PIDPPIDСSTIME TTY TIME COMMAND user :46:40 ttyp4 0:00 -sh user :55:10 ttyp4 0:00 ps -f $ ksh $ ps -f UID PIDPPIDCSTIME TTYTIME COMMAND user :46:40 ttyp4 0:00 -sh user :57:20 ttyp4 0:00 ksh user :57:26 ttyp4 0:00 ps -f $ exec ps -f UID PIDPPIDCSTIME TTYTIME COMMAND user :46:40 ttyp4 0:00 -sh user :57:26 ttyp4 0:00 ps -f

Порожденные процессы и среда Порожденные процессы не могут изменить среду родительских процессов. Пример: $ export color=lavender $ ksh(создание порожденногопроцессаshell) $ ps -f UIDPID PPIDС STIMETTYTIMECOMMAND user :46:40ttyp40:00-sh user :57:20ttyp40:00ksh user :57:26ttyp40:00ps -f $ echo $color lavender $ color=red $ echo $color red $ exit(выход из порожденного процесса shell) $ ps -f (возвра г в родительский процесс) UIDPID PPIDС STIMETTYTIMECOMMAND user :46:40ttyp40:00-sh user :58:20ttyp40:00ps -f $ echo $color lavender

Модуль 9 Shell: генерация имен файлов

Генерация имен файлов:введение Выполнение команд Выполнение команд Установки параметров среды Установки параметров среды Присвоение значений переменным Присвоение значений переменным Подстановка переменных Подстановка переменных Генерация имен файлов Генерация имен файлов Интерпретируемый язык программирования Интерпретируемый язык программирования Подстановка команд Подстановка команд Конвейеры Перенаправление ввода/вывода Перенаправление ввода/вывода Shell export переменная env переменная=значение set $переменная переменная=$(команда) * ? [ ]

Генерация имен файлов (расширение имен файлов):введение Символы генерации имен файлов интерпретируются shell`ом Shell будет генерировать имена файлов, удовлетворяющие заданному шаблону Генерация имен файлов осуществляется перед выполнением команды Команда будет оперировать со сгенерированными именами файлов

Символы генерации имен файлов ?Соответствует любому одному символу за исключением лидирующей точки [ ]Определяет группу символов -Определяет группу символов, принадлежащих заданному диапазону !Отвергает заданную группу символов *Соответствует произвольному числу символов, в том числе и нулевому, исключая лидирующую точку

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

Генерация имен файлов:символ ? ?Соответствует любому одному символу за исключением лидирующей точки Примеры $ ls -a …..zz abc abcd abcdef abcz bbabb cyz zzayy $ echo ???Результат: abc cyz $ echo abc?Результат: abcd abcz $ echo ??a??Результат: bbabb zzayy $ echo.??Результат:.zz $ echo ?Результат: ?

Генерация имен файлов:символы [ ] [ ]Определяет группу символов, из которой может подойти лишь один Примеры $ ls -a …..zz 1G 2G 7G 15G Ant Cat Dog abc abcdef ba cyz $ echo [abc]??Результат: abc cyz $ echo [1-9][A-Z]Результат: 1G 2G 7G $ echo [!A-Z]??Результат: 15G abc cyz

Генерация имен файлов:символ * *Соответствует произвольному числу символов, в том числе и нулевому, исключая лидирующую точку Примеры $ ls -a …..profile ab.dat abcd.dat abcde abcde.dat $ echo *Результат: ab.dat abcd.dat abcde abcde.dat $ echo.*Результат:.profile $ echo *.datРезультат: abcd.dat abcde.dat $ echo *eРезультат: abcde

Модуль 10 Shell: использование кавычек

Использование кавычек:введение Ряд символов имеет «специальный» смысл для shell`а: - пробел - возврат каретки - $ - # - * - «Закавычивание» позволяет отменить особый смысл специальных символов.

Символы закавычивания Обратный слэш \ Одиночные кавычки Двойные кавычки

«Закавычивание»: символ \ \ Отменяет специальный смысл непосредственно следующего за ним символа Пример: $ echo the \$ text the $text $ color=red\ white\ and\ blue $ echo the value of \$color is $color the value of $color is red white and blue $ echo one two \ >three four one two three four

«Закавычивание»: символ Отменяет специальный смысл всех символов, заключенных между одиночными кавычками Пример: $ color=red white and blue $ echo the value of \$color is $color the value of \$color is $color $ echo the value of $color is $color the value of $color is red white and blue

«Закавычивание»: символ Отменяет специальный смысл всех символов, заключенных между двойными кавычками, за исключением \, $, {имя переменной}, $(команда) и Пример: $ color=red white and blue $ echo the value of \$color is $color the value of $color is red white and blue $ cur_dir=$LOGNAME - your current directory is $(pwd) $ echo $cur_dir user3 - your current directory is /home/user3/tree $ echo theyre all here, \\,, \ theyre all here, \,,

Модуль 11 Shell: перенаправление ввода и вывода

Перенаправление ввода и вывода :введение Выполнение команд Выполнение команд Установки параметров среды Установки параметров среды Присвоение значений переменным Присвоение значений переменным Подстановка переменных Подстановка переменных Генерация имен файлов Генерация имен файлов Интерпретируемый язык программирования Интерпретируемый язык программирования Подстановка команд Подстановка команд Конвейеры Перенаправление ввода/вывода Перенаправление ввода/вывода Shell export переменная env переменная=значение set $переменная переменная=$(команда) * ? [ ] cmd > file cmd2 > f.err cmd < file

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

stdin, stdout, stderr ФайлУстройствоДескриптор файла stdin Клавиатура0 stdout Экран1 stderr Экран2

Перенаправление ввода: < Любая команда, читающая ввод со стандартного ввода, может за счет перенаправления принимать его из другого файла Пример: $ cat remind Your mothers birthday is November 29 $ mail user < remind ! Перенаправление ввода не изменяет содержимое файла ввода

Перенаправление вывода: > и >> Любая команда, отправляющая результат на stdout, может перенаправить его в другой файл Пример: Создание/ПерезаписьСоздание/Добавление $ date > date.out$ ls >> ls.out $ date > who.log$ who >> who.log $ cat > cat.out$ ls >> who.log ввод текста + ! Один и тот же файл не может быть одновременно открыт для перенаправления и ввода и вывода. Файлы ввода и вывода должны быть разными. В противном случае можно потерять исходное содержимое файла. cat f1 f2 > f1 - здесь будет потеряно содержимое файла f1.

Перенаправление протокола: 2> и 2>> Любая команда, выводящая сообщения об ошибках в стандартный протокол, может перенаправить его в другой файл Пример: $ cp 2> cp.errСоздание/Перезапись $ cp 2>> cp.err Создание/Добавление $ more cp.err ……

Что такое фильтр? Читает стандартный ввод и генерирует стандартный вывод. Осуществляет фильтрацию входного потока или файла. Посылает результаты на экран, не изменяя входной поток или файл. Обрабатывает вывод других команд, когда они используются совместно с перенаправлением вывода Пример: cat, grep,sort,wc

wc - подсчет количества строк Синтаксис: wc [-lwc ] [файл...]Подсчитывает число строк(-l), слов (-w) и символов (c) в файле Примеры $ wc fileрассматривается как аргумент команды file $ wc -l file 115 file $ ls > ls.out подсчет количества файлов в каталоге $ wc -w ls.out 72 ls.out

wc - подсчет количества строк Примеры $ wc подсчитывается количество строк, слов и ab cdeсимволов, вводимых со стандартного dvbnvnsbvbndввода dhjhjdhfkdhjf $ wc < fileстандартный файл заменяется на файл file, имя файла не выводится $ wc -w file 715 file

sort - алфавитная и числовая сортировка Синтаксис: sort [-ndutX ] [-k номер_поля] [файл...]Сортирует строки Примеры $ sort fileрассматривается как аргумент команды $ tail -1 /etc/passwd user3:xyzbkd:303:30:student user3:/home/user3:/usr/bin/sh $ sort -nt: -k 3 < /etc/passwd $ who > who1 $ sort who1 упорядочивание пользователей в системе по алфавиту $ sort -u who1 упорядочивание с исключением повторяющихся строк

sort - опции сортировки noneлексикографическая (по кодам ASCII) -dпо принципу словаря (игнорируя любые символы, не являющиеся буквами, цифрами или пробелами) -nчисловая -uуникальная (исключаются повторяющиеся строки) -tXуказание разделителя (X - символ-разделитель полей) -knвыбор базового поля n для сортировки( по умолчанию n=1) -rсортировка в обратном порядке

grep - поиск по модели Синтаксис: grep [-cinv] [-e] модель [-e модель][файл...] grep [-cinv] -f файл_с_моделями [файл...] Примеры $ grep user /etc/passwd $ grep -v user /etc/passwd $ grep -in -e like -e love file $ who > who1 $ grep -f who1 /etc/passwd

grep - опции -cподсчитывать только число строк, содержащих заданную модель -iигнорировать регистр букв в модели -nсопровождать выводимые строки номерами -vвыводить строки, не содержащие заданную модель поиска

grep - построение модели В качестве модели можно задать некоторый текст. Такая модель называется регулярным выражением. Для их задания можно использовать некоторые специальные символы: ^поиск совпадения в начале строки $поиск совпадения с конца строки.соответствует любому одному символу *предшествующая модель повторяется 0 или более раз []задается совокупность символов [-]задается диапазон символов [^]инвертирует процесс отбора ! Во избежание проблем при интерпретации shellом указанных специальных символов, лучше заключить регулярное выражение в кавычки.

Перенаправление ввода и вывода: обзор cmd < файл Перенаправляет ввод команды cmd из файла cmd > файл Перенаправляет вывод команды cmd в файла cmd > > файл Перенаправляет вывод команды cmd и добавляет к файлу cmd 2> файл_ошибок Перенаправляет протокод команды cmd в файл_ошибок Фильтр Команда, которая читает со стандартного ввода и генерирует стандартный вывод. wc Подсчет количества слов, строк и символов. sort Cортировка строк в алфавитном или числовом порядке. grep Осуществляет поиск строк, содержащих модель.

Модуль 12 Shell: каналы

Конвейеры :введение Выполнение команд Выполнение команд Установки параметров среды Установки параметров среды Присвоение значений переменным Присвоение значений переменным Подстановка переменных Подстановка переменных Генерация имен файлов Генерация имен файлов Интерпретируемый язык программирования Интерпретируемый язык программирования Подстановка команд Подстановка команд Конвейеры Перенаправление ввода/вывода Перенаправление ввода/вывода Shell export переменная env переменная=значение set $переменная переменная=$(команда) * ? [ ] cmd > file cmd2 > f.err cmd < file cmd A | cmd B

Зачем используются конвейеры? Конвейеры позволяют напрямую использовать вывод одной команды в качестве ввода другой, без создания временного файла. $ who > temp_file $ wc -l < temp_file $ rm temp_file who ----> wc -l

Символ | (символ канала) прием stdin stdin генерирует генерирует генерирует stderr stdout stderr stdout stderr stdout Пример: $ ps -ef | more $ ls | more $ ls | sort -r |more Примечание: cmd B должна быть фильтром cmd Acmd Bcmd C

Требования к командам в конвейере Любая команда, расположенная слева от символа | должна направлять свой вывод в стандартный вывод (stdout) Любая команда, расположенная справа от символа | должна читать свой ввод из стандартного ввода (stdin) Любая команда, расположенная в середине конвейера должна читать свой ввод из стандартного ввода (stdin) и направлять свой вывод в стандартный вывод (stdout), т.е. быть фильтром

Перенаправление вывода или конвейеры? Перенаправление ввода/выводаКонвейеры Синтаксис: cmd_out > filecmd_out | cmd_in or cmd_in < file Пример: who > who.outwho | sort sort < sort.out

Перенаправление в конвейере 3 потока для каждой команды: stdin, stdout, stderr Можно перенаправить потоки, которые не предназначены для конвейера stdout stdin cmd Acmd B Доступны дляstdinstdout перенаправленияstderrstderr stdout stdin cmd Acmd B cmd C Доступны дляstdin stderr stdout перенаправленияstderrstderr Пример: $ grep user /etc/passwd | sort > sort.out

Требования к командам при перенаправлении в конвейере Любая команда, расположенная слева от символа | может перенаправить стандартный ввод и протокол, поскольку ее вывод передается следующей команде конвейера. Любая команда, расположенная справа от символа | может перенаправить стандартный вывод и протокол, поскольку она читает свой ввод с предшествующей команды конвейера. Любая команда, расположенная между двумя символами | может перенаправить стандартный протокол, т.к. она читает ввод с предшествующей команды и направляет свой вывод следующей команде конвейера.

Фильтры cutвыделяет указанные столбцы или поля и выводит на stdout trпреобразует символы teeпередает вывод в файл и на stdout prформатирует вывод и направляет на stdout

Команда cut (1) Синтаксис: cut -cсписок [файл...]Выделяет колонки или поля из файлов или стандартного ввода cut -fсписок [-dсимвол] [-s] [файл...] Опции: -свыделение колонок -fвыделение полей -dсимволуказание символа - разделителя полей -sуказание на пропуск любой строки, в которой нет разделителя

Команда cut (2) Список - последовательность чисел, которая указывает на подлежащие выделению поля или колонки. Форматы для задания списка полей или колонок: А-ВПоля или колонки от А до В включительно А-От поля или колонки А до конца строки -ВС начала строки до поля или колонки В А, ВПоля или колонки А и В Допустимо использовать любую комбинацию форматов.

Команда cut (3) Примеры: $ date | cut -c1-3 Fri $ tail -1 /etc/passwd user3:mdhbmkdj:303:30:student user3:/home/user3:/usr/bin/sh $ cut -f1,6 -d: /etc/passwd user3: /home/user3 $ cut -f1,6 -d: /etc/passwd |sort -r … $ cut -f1,3,5-7 /etc/passwd user3:303:student user3:/home/user3:/usr/bin/sh

Команда tr Синтаксис: tr [-s ] строка1 [строка2]Преобразует символы строки1на соответствующие им символы строки2 Опции: -s строка1 Заменяет все символы строки1, встречающиеся несколько раз подряд на одиночное вхождение Примеры $ who | tr -s преобразование нескольких последовательно расположенных пробелов в один $ date |cut -c1-3 | tr [[:lower:]] [[:upper:]] перевод символов строк из нижнего регистра в верхний

Команда tee (1) Синтаксис: tee [-a ] файл [файл...]Разветвляет конвейер, направляя вывод на стандартный вывод и одновременно в файл Опции: - a Команда tee добавляет вывод в конец файла, не перезаписывая его Когда используется tee ? Для сбора данных промежуточного вывода в конвейере (tee ставится в середину конвейера). Для передачи результирующего вывода команды на экран и в файл для удобства протоколирования.

Команда tee (2) Примеры: $ who | sort $ who | tee unsorted | sort $ who | tee unsorted | sort | tee sorted $ who | wc -l $ who | tee whoatsystem | wc -l

Команда pr (1) Синтаксис: pr [-опция] [файл...]Форматирует стандартный ввод и направляет его в стандартный вывод Опции: -kОбеспечивает вывод k столбцов сверху вниз -aОбеспечивает вывод в несколько столбцов, используется совместно с опцией - k, печать осуществляется построчно -tУдаляет заголовок и хвостовик на страницах -dРазделяет строки пустой строкой -wNУстанавливает длину строки в N символов -lN Устанавливает N строк на странице -nCKЗадает нумерацию из K цифр, отделяемых от строки символом С ( по умолчанию С - знак табуляции ) -oNСмещает вывод на N столбцов от левого края страницы -pУстанавливает режим ожидания нажатия клавиши перед каждой страницей -hстрока Следующая за этой опцией строка используется в качестве заголовка

Команда pr (2) Примеры: $ pr -n3 fileнумерует строки $ pr -n3 file | more $ ls | pr -3вывод 3 столбцов $ grep home /etc/passwd | pr -h User accountsдобавление заголовка

Печать из конвейера … | lpСтавится в конце конвейера, направляет вывод на печать Примеры: $ pr -158 file | lp Request id is laser-226 (standart input). $ ls -F $HOME | pr -3 | tee homedir | lp Request id is laser-227 (standart input). $ grep home /etc/passwd | pr -h user accounts | lp Request id is laser-228 (standart input).

Конвейеры: обзор Конвейер cmd_out | cmd_in cmd_out | cmd_in_out | cmd_in cutВыделяет указанные колонки или поля для стандартного вывода trПреобразует символы teeПосылает свой вывод в файл и на стандартный вывод prВыводит на экран отформатированный вывод, обычно используется командой lp.

Модуль 13 Управление процессами

Команда ps Синтаксис: ps [-efl]Выводит информацию о состоянии процесса Пример: $ ps PIDTTYTIMECOMMAND 1324ttyp20:00sh 1387ttyp20:00ps $ ps -ef UIDPIDPPIDCSTIMETTYTIMECOMMAND root000Jun 1?0:20swapper root100Jun 23?0:00init root200Jun 23?0:16vhand root300Jun23?12:14statdeamon user :03:21ttyp20:00-sh user :30:23ttyp20:00ps-ef

Опции команды ps Без опцийВыдача краткой информации о процессах, связанных только с сеансом работы с системой запустившего ее пользователя. -eВыдача списка всех процессов, развивающихся в системе -fПолучение полной информации о состоянии процессов -lПолучение информации о процессах в т.н. длинном формате

Фоновые процессы(1) Синтаксис: командная строка > cmd.out & Планирует командную строку как задание для фонового режима. Возвращает приглашение на ввод как только задание запущено. Перенаправляет вывод фонового процесса с тем, чтобы его вывод не смешивался с интерактивными командами. Выход из системы приведет к завершению процессов, выполняемых в фоновом режиме. Пользователь получит предупреждение в тот момент, когда попытается выйти из системы,следующего содержания: There are running jobs, и поэтому он снова должен ввести команду exit или нажать +. Любая из выполняемых в фоновом режиме команд, требующая стандартного ввода, должна читать его из файла за счет перенаправления ввода.

Фоновые процессы(2) Пример: $ grep user * > grep.out & [1] 194 $ ps PIDTTYTIMECOMMAND 164ttyp20:00sh 194ttype20:00grep 195ttyp20:00ps Shell сообщает номер задания и идентификатор процесса при переводе команды в фоновый режим в том случае, если указана опция monitor в команде set (set -o monitor).При указании этой опции по завершении фонового процесса будет выдано на экран соответствующее сообщение. Команду, выполняемую в фоновом режиме,нельзя прервать нажатием +. Такого рода команды могут быть прекращены с помощью команды kill. Весь ввод и вывод фонового процесса должен быть безусловно перенаправлен.

Запуск заданий в фоновом/оперативном режиме jobsВыводит список выполняемых заданий + Приостанавливает оперативный процесс (Символ приостановки определяется во время входа в систему в файле.profile с помощью команды stty susp ^z), выдает приглашение shellа fg [%номер]Переводит задание с номером в оперативный режим fg [%строка] Переводит любое задание, запущенное командной строкой, начинающееся со строки в оперативный режим bg [%номер]Переводит задание с номером в фоновый режим bg [%строка] Переводит любое задание, запущенное командной строкой, начинающееся со строки в фоновый режим

Команда nohup(1) Синтаксис: nohup команда & Делает команду защищенной от выхода пользователя из системы Пример: $ nohup cat * > bigfile [1] 972 $ + login: user3 Password:... $ ps -ef | grep cat UIDPIDPPIDCOMMAND user39721…cat * > bigfile &

Команда nohup(2) Эта команда является прификсной, т.е. указывается перед запускамой командой. Если команда запускается с префиксной командой nohup, пользователь может выйти из системы, и при этом UNIX продолжит выполнение фонового процесса даже несмотря на то, что родительский shell уже завершен. При этом родителем команды становится процесс с номером 1 (init). Если файл вывода не указан, команда nohup сама обеспечит перенаправление вывода в файл nohup.out. Причем в этот файл будет записываться и стандартный вывод (stdout) и стандартный протокол (stderr)

Команда nice Синтаксис: nice [-N] командная_строка Запускает процесс на выполнение с пониженным приоритетом. N - число в диапазоне от 0 до 19. Пример: $ nice -10 cc myprog.c -o myprog $ nice -5 sort * > sort.out По умолчанию базовый приоритет равен 10. Большее значение числа соответствует меньшему приоритету. Приоритеты процессов можно определить с помощью команды ps -l. Они выводятся в столбце с заголовком PRI.Базовое значение приоритета выводится в столбце с заголовком NI.

Команда kill(1) Синтаксис: kill [-s имя_сигнала ] PID [PID…] Посылает сигнал указанному процессу. Прекращает выполнение любой команды, включая запущенные с прификс-командой nohup. Команда kill не может использоваться по отношению к процессам других пользователей (исключение - суперпользователь). По умолчанию процессу посылается сигнал TERM. Другие сигналы задаются с помощью опции -s. Наибольшую гарантию, что процесс будет действительно уничтожен обеспечивает сигнал KILL. Для уничтожения процесс должен быть специфицирован указанием идентификатора процесса, либо номера задания (перед числом следует поставить символ %). Если процесс указан цифрой 0, kill уничтожает все процессы, связанные текущим shellом, включая и его самого.

Команда kill(2) Примеры $ cat /usr/share/ man/cat1/* > bigfile1 & [1] 995 $ cat /usr/share/ man/cat2/* > bigfile2 & [2] 996 $ kill 995 [1] - Terminated cat /usr/share/ man/cat1/* > bigfile1 & $ kill -s INT %2 [2] - Interrupt cat /usr/share/ man/cat2/* > bigfile2 & $ kill -s KILL 0 Команда kill -l выводит все имена сигналов, допустимых в соответствующей реализации системы.

Модуль 14 Введение в Shell-программирование

Shell-программирование: обзор Shell-процедура - это обычный файл, содержащий команды системы UNIX Доступ к файлу должен быть по меньшей мере разрешен на чтение и выполнение Для выполнения shell-процедуры следует ввести имя файла в ответ на приглашение shell. Данные могут быть переданы в shell-процедуру через: – переменные среды – аргументы командной строки – использование ввода Обычно пользователи создают подкаталог bin в своем домашнем каталоге HOME для хранения собственных программ и включают переменную &HOME/bin в свою переменную PATH.

Пример shell-процедуры $ cat myprog #this is program myprog date ls -F Выполнение процедуры myprog: $ myprog /usr/bin/sh /usr/bin/date/usr/bin/ls PID=1324 PID=1350 myprog # date ls -F PID=1361 PID=1362 $

Передача данных shell-процедуре(1) Одним из способов передачи данных процедуре является их передача через среду Пример: $ color=lavender $ cat color1 echo You are now running program: color1 echo the value of variable color is: $color $ chmod +x color1 $ color1 You are now running program: color1 the value of variable color is: $ export color $ color1 You are now running program: color1 the value of variable color is: lavender

Передача данных shell-процедуре(2) Пример: $ cat color2 echo The original value of the variable color is: $color echo This program will set the value of color to amber color=amber echo The value of variable color is now $color echo When your program concludes, display the value of the color variable. $ export color=lavender $ echo $color lavender $ color2 The original value of the variable color is: lavender echo This program will set the value of color to amber The value of variable color is now amber When your program concludes, display the value of the color variable. $ echo $color lavender

Аргументы shell-процедур(1) Командная строка: $ sh_program arg1 arg2...arg23....argX $0$1$2${23}$X Пример: $ cat color3 echo You are now running program: $0 echo The value of command line argument \#1 is: $1 echo The value of command line argument \#2 is: $2 $ chmod +x color3 $ color3 red green You are now running program: color3 echo The value of command line argument #1 is: red echo The value of command line argument #2 is: green

Аргументы shell-процедур(2) Пример: Данная shell-процедура инсталлирует программу, специфицированную как аргумент командной строки в каталог bin пользователя. $ cat > my_install echo $0 will install $1 to your bin directory chmod +x $1 mv $1 $HOME/bin echo Installation of $1 is complete $ chmod +x my_install $ my_install color3 my_install will install $1 to your bin directory Installation of color3 is complete $

Специальные переменные shell: # и *(1) #Количество аргументов в командной строке *Строка, содержащая все аргументы командной строки (за исключением $0) Пример: $ cat color4 echo There are $# command line arguments echo They are $* echo The first command line argument is $1 $ chmod +x color4 $ color4 red green yellow blue The are 4 command line arguments They are red green yellow blue The first command line argument is red $

Специальные переменные shell: # и *(2) Усовершенствованный пример программы инсталляции допускает в командной строке несколько аргументов: Пример: $ cat > my_install2 echo $0 will install $# files to your bin directory echo The files to be installed are: $* chmod +x $* mv $* $HOME/bin echo Installation is complete $ chmod +x my_install2 $ my_install2 color1 color2 my_install2 will install 2 files to your bin directory The files to be installed are: color1 color2 Installation is complete

Специальные переменные shell: # и *(3) Пример: $ cat list_dir cd $* echo You are in the $(pwd) directory echo The contents of this directory are: ls -F $ list_dir dir1 dir2sh: cd: bad arguments count

Команда shift(1) Сдвигает все строки, отмеченные символом *, влево на n позиций Уменьшает переменную # на n (по умолчанию n=1) Синтаксис: shift [n] Команду shift полезно использовать для: доступа к позиционным параметрам в группах, например, совокупности координат x и y удаления опций из командной строки, предполагая, что они предшествуют аргументам

Команда shift(2) Пример: $ cat color5 orig_args=$* echo There are $# command line arguments echo They are $* echo Shifting two arguments shift 2 echo There are $# command line arguments echo They are $* echo Shifting two arguments shift 2; final_args=$* echo Original arguments are: $orig_args echo Final arguments are: $final_args

Команда shift(3) $ color5 red green yellow blue orange black There are 6 command line arguments They are red green yellow blue orange black Shifting two arguments There are 4 command line arguments They are yellow blue orange black Shifting two arguments Original arguments are: red green yellow blue orange black Final arguments are: orange black $

Команда read(1) Синтаксис: read переменная [переменная...] Пример: $ cat color6 #This program prompts for user input echo Please enter your favorite two colors -> \c read color_a color_b echo The colors you entered are: $color_b $color_a $ chmod +x color6 $ color6 Please enter your favorite two colors -> read blue The colors you enterd are: blue red $ color6 Please enter your favorite two colors -> read blue tan The colors you entered are: blue tan red

Позиционные параметры и переменные Позиционные параметры задаются в командной строке при вызове программы. Значения переменным присваиваются посредством команды read при вводе данных, осуществляемом в процессе выполнения процедуры.

Команда echo и управляющие символы Это специальные управляющие символы, интерпретируемые командой echo, которые обеспечивают управление строками. Эти символы интерпретируются командой echo, а не shellом. СимволДействие при печати \bВозврат на один симол \cПодавление перехода на новую строку \fПеревод страницы \nНовая строка \rВозврат каретки \tСимвол табуляции \\Обратный слэш \nnnСимвол, код ASCII которого nnn

Команда read(2) Пример: $ cat > my_install3 echo $0 will install files to your bin directory echo Enter the names of the files -> \c read filenames chmod +x $filenames mv $filenames $HOME/bin echo Installation is complete $ chmod +x my_install3 $ my_install3 my_install3 will install files to your bin directory Enter the names of the files -> f1 f2 Installation is complete

shell-функции Синтаксис: function имя_функции {shell_текст} или имя_функции (){shell_текст} Пример: $ function installinstall() > {{ > echo Install file:$1echo Install file:$1 >chmod +x $1chmod +x $1 >mv $1 $HOME/binmv $1 $HOME/bin >echo Install completeecho Install complete > }} $ install myfile Install file: myfile Install complete

Дополнительные средства Комментирование текста shell-процедур с помощью знака # Cуществует альтернативный запуск shell-процедуры: sh shell-процедура аргументы shell-процедура должна быть доступна для чтения и может не быть исполняема Отладчик для shell-процедур: sh -x shell-процедура аргументы Каждая строка shell-процедуры выводится перед выполнением

Модуль 15 Shell-программирование: ветвления

Коды завершения Переменная shellа ? содержит код завершения последней выполненной команды 0команда выполнена без ошибки (true) не 0команда завершена в связи с ошибкой (false) Пример: $ true $ echo $? 0 $ ls $ echo $? 0 $ echo $? 0 $ false $ echo $? 1 $cp Usage : cp f1 f2... $ echo $? 1 $ echo $? 0

Команда test Синтаксис: test выражение или [ выражение ] Команда test оценивает истинность выражения и формирует код завершения. Значение выраженияКод завершения true0 false не 0 (обычно 1) Команда test может оценивать истинность условия, в качестве аргументов которого могут быть: целые числа строки файлы Команда test ничего не пишет в стандартный вывод. При вызове команды test вторым способом после открывающей и перед закрывающей квадратными скобками должны быть пробелы.

Команда test:сравнение чисел Синтаксис : [ число отношение число ]Сравнивает числа в соответствии с отношением Отношения : -ltменьше -leменьше или равно -gtбольше -geбольше или равно -eqравно -neне равно Пример: $ [ $X -lt 7 ] $ echo $? 0 $ [ $X -gt 7 ] $ echo $? 1

Команда test:сравнение чисел Пример: $ [ $XX -eq 3 ][ -eq 3 ] sh: test: argument expected $ [ $XX -eq 3 ][ -eq 3 ]XX - NULL Общим правилом является необходимость заключений в двойные кавычки всех выражений вида $переменная, что предотвращает неподходящую замену переменных shellом.

Команда test:сравнение строк Синтаксис : [ строка1 = строка2 ]Определяется эквивалентность строк [ строка1 != строка2 ]Определяется неэквивалентность строк Пример: $ X=abc $ [ $X = abc ] $ echo $? 0 $ [ $X != abc ] $ echo $? 1 После открывающей и перед закрывающей квадратными скобками должны стоять пробелы.

Операторы сравнения строк строка1=строка2истина, если строки идентичны друг другу строка1!=строка2истина, если строки не идентичны друг другу -z строкаистина, если строка нулевой длины -n строкаистина, если строка ненулевой длины строкаистина, если строка ненулевой длины Заключение переменной в кавычки застрахует от появления синтаксической ошибки Пример: $X=Yes we will $[ $X = yes ]вызывает синтаксическую ошибку, интерпретируется shellом как [Yes we will = yes ] $[ $X = yes ]правильный синтаксис, интерпретируется shellом как [Yes we will = yes ], и сравнение осуществляется корректным образом.

Особенности сравнения чисел и строк Shell трактует все аргументы как числа в случае, если осуществляется сравнение чисел, и все аргументы как строки, если осуществляется сравнение строк. Пример: $ X=03 $ Y=3 $ [ $X -eq $Y ]сравнивается число 03 с числом 3 $ echo $? 0истина, т.к. аргументы равны друг другу, поскольку они числа $ [ $X = $Y ]сравнивается строка «03» со строкой «3» $ echo $? 1ложь, т.к. аргументы не равны друг другу, поскольку они строки

Команда test: тестирование файлов Синтаксис : test -опция имя_файлаОценивает характеристики имя_файла в соответствии с опцией Опции: -f имя_файлаистина, если файл существует и является обычным файлом. т.е. не каталогом и не файлом устройства -s имя_файлаистина, если файл существует и его размер больше 0 -r имя_файлаистина, если файл существует и доступен для чтения -w имя_файлаистина, если файл существует и доступен для записи -x имя_файлаистина, если файл существует и доступен для выполнения -d каталогистина, если файл существует и является именно каталогом Пример: $ test -f fileили [ -f file ] $ echo $? 0 $ test -d fileили [ -d file ] $ echo $? 1

Команда test: другие операторы Синтаксис : -o OR(ИЛИ) -aAND(И) !NOT(НЕ) \ ( \)ГРУППИРОВКА Пример: $ [ $ANS=y -o $ANS=Y ] $ [ $NUM -gt 10 -a $NUM -lt 20 ] $ test -s file -a -r file $ test ! -d file $ [ \( $# -eq 2 \) -a \ ( $1 -eq -m \ ) -a \ ( -d $2 -o -s $2 \) ] в этом примере проверяется истинность высказывания: «что имеются два аргумента в командной строке» и «что первый аргумент командной строки есть -m и что последний аргумент командной строки есть каталог или файл, размер которого больше 0 Между операторами, скобками и аргументами должны стоять пробелы.

Команды exit и return Синтаксис : exit [аргумент] Завершает выполнение shell-программы и формирует код возврата. Если команда задана без аргументов, то код возврата устанавливается равным коду возврата последней команды, выполненной перед exit. return [аргумент] Останавливает выполнение функции и возвращает в вызвавшую процедуру аргумент, содержащий код завершения. Если аргумент не указан, то код зовершения соответствует последней команде, выполненной в функции перед выходом из нее. Когда прекращение выполнения функции обусловлено какими-то внешними по отношению к ней причинами, то это равносильно exit.

Команды exit и return Пример: $ cat exit_test echo exiting program now exit 99 $ exit_test exiting program now $echo $? 99 $ cat rtn_test function rtn { echo return from function return 99 } $ rtn_test return from function $echo $? 99

Конструкция if Синтаксис:(соответствует передаче управления на одну ветвь) if список_А then список_В fi Последовательность выполнения конструкции if: 1. Выполняются команды списка_А команд. 2. Если код завершения последней команды из списка_А равен 0 (ИСТИНА), то выполняются команды из списка_В команд и затем команды, следующие за fi. 3. Если код завершения последней команды из списка_А не равен 0 (ЛОЖЬ), то выполняются команды, следующие за fi.

Блок-схема конструкции if if список_А then список_В fi другие команды код завершения =0 код завершения не равен 0

Конструкция if Примеры: 1. if test -s file then echo file exists fi echo hello 2. if grep kingkong /etc/passwd then echo found kingkong fi

Конструкция if Примеры: 3. Использование для управления переходом в случае возникновения ошибок при выполнении программы if [ $# -ne 3 ] then echo Incorrect syntax echo Usage: cmd arg1 arg2 arg3 exit 99 fi

Конструкция if-else Синтаксис:(соответствует передаче управления на одну из двух возможных ветвей) if список_А then список_В else список_C fi Последовательность выполнения конструкции if-else: 1. Выполняются команды списка_А команд. 2. Если код завершения последней команды из списка_А равен 0 (ИСТИНА), то выполняются команды из списка_В команд и затем команды, следующие за fi. 3. Если код завершения последней команды из списка_А не равен 0 (ЛОЖЬ), то выполняются команды из списка_С команд и затем команды, следующие за fi.

Блок-схема конструкции if-else if список_А then список_В fi другие команды код завершения =0 код завершения не равен 0 else список_C

Конструкция if-else Пример: if [ $X -lt 10 ] then echo X is less then 10 else echo X is not less then 10 fi

Конструкция case Синтаксис:(соответствует передаче управления на одну из множества возможных ветвей) case слово in образец1) список_А ;; образец2) список_В ;; образецN) список_N ;; esac Образцы задаются по формату имен файлов, сравнение основано на проверке двух строк на абсолютно точное совпадение. Могут использоваться следующие специальные символы: *сравнение любой строки символов, включая пустую ?сравнение любого одиночного символа []сравнение любого одного символа, помещенного между двумя символами обеспечивает сравнение с любым, попадающим в этот интервал |логический оператор OR («ИЛИ»)

Конструкция case слово образец 1 слово образец 2 слово образец N esac другие команды список_А список_В список_N совпадение несовпадение...

Конструкция case Пример: case $ANS in yes)echo O.K. ;; no)echo no go ;; esac case $OPT in 1)echo option 1 ;; 2)echo option 2 ;; 3)echo option 3 ;; *)echo no option ;; esac

Конструкция case: примеры задания образцов В образцах конструкции case используются те же специальные символы, что и для генерации имен файлов Пример: $ cat menu_with-case echoCOMMAND MENU echod to display time and date echo w to display logged-in users echol to list contents of current directory echoPlease enter your choice: read choice case $choice in [dD]*)date;; [wW]*)who;; l*|L*)ls;; *)echo Invalid selection;; esac $

Shell-программирование: ветвления. Заключение. Код завершенияВозвращает числовое значение после выполнения каждой программы - echo $? Сравнение чисел[ $число1 -lt $число2 ] Сравнение строк[ $строка1 = $строка2 ] Тестирование файловtest -f имя_файла exit nЗавершает программу и формирует код завершения if, if-elseПередача управления осуществляется на основе анализа кода завершения последней команды списка_А caseСлово сравнивается с каждым образцом по принципу сравнения строк

Модуль 16 Shell-программирование: циклы

Введение в циклы Назначение :Повторное выполнение совокупности команд Управление:Основано на анализе кода завершения ключевой команды Три вида:while...do...done until... do... done for... do... done

Оценивание значений арифметических выражений с помощью let(1) Синтаксис: let выражение или ((выражение)) let дает возможность использовать в shell-программах арифметические выражения работает в формате длинного целого при построении арифметических выражений можно использовать операторы (даны в прорядке убывания приоритета выполнения): ОператорОписание -Одноместный минус (операция изменения знака арифметического выражения !Логическое отрицание * / %Умножение, деление, остаток от деления + -Сложение, вычитание = Сравнение == !=Равно, не равно =Присвоение ()Скобки используются для изменения порядка вычисления

Оценивание значений арифметических выражений с помощью let(2) Пример: $ x=10$ x=12 $ y=2$ let x < 10 $ let x=x+2$ echo $? $echo $x1 12$ (( x > 10 )) $ let x=x / (y+1) $ echo $? $ echo $x0 4$if (( x > 10 )) $ (( x=x+1 ))> then echo x greater $ echo $x> else echo x not greater 5fi x greater

Конструкция while(1) Повторение выполнения когда условие истинно. Синтаксис: while список_А do список_В done Выполнение цикла while происходит следующим образом: 1. Выполняются команды списка_А. 2. Если код завершения последней команды из списка_А равен 0 (true), то выполняется список_В команд. 3. Возвращение к п Если код завершения последней команды из списка_А не равен 0 (false), то управление передается первой команде, следующей за ключевым словом done.

Конструкция while(2) код завершения не 0 false код завершения 0 true while список_А do список_В done

Конструкция while(3) Пример: $ cat test_while X=1 while (( X

Конструкция while(4) Пример: Повторение выполнения цикла, когда ans соответствует yes ans=yes while [ $ans = yes ] do echo Enter a name read name echo $name >> file.names echo Continue? enter yes or no read ans done

Конструкция while(5) Пример: Повторение выполнения цикла, когда имеются аргументы в командной строке while (( $# != 0 )) do if test -d $1 then echo contents of $1: ls -F $1 fi shift echo There $# items echo left on the cmd line done

Конструкция until(1) Повторение выполнения тела цикла до тех пор, пока условие истинно. Синтаксис: until список_А do список_В done Выполнение цикла until происходит следующим образом: 1. Выполняются команды списка_А. 2. Если код завершения последней команды из списка_А не равен 0 (false), то выполняется список_В команд. 3. Возвращение к п Если код завершения последней команды из списка_А равен 0 (true), то управление передается первой команде, следующей за ключевым словом done.

Конструкция until(2) код завершения 0 true код завершения не 0 false until список_А do список_В done

Конструкция until(3) Пример: $ cat test_until X=1 until (( X > 10 )) do echo hello X is $X; let X=X+1 done $ test_until hello X is 1 hello X is 2. hello X is 10 Позаботьтесь о том, чтобы циклы until не оказались бесконечными. В таких циклах управляющая команда всегда возвращает код завершения false.

Конструкция until(4) Пример: Повторение выполнения цикла, когда ans не станет no ans=yes until [ $ans = no ] do echo Enter a name read name echo $name >> file.names echo Continue? enter yes or no read ans done

Конструкция until(5) Пример: Повторение выполнения тела цикла до тех пор, пока в командной строке не окажется аргументов until (( $# == 0 )) do if test -d $1 then echo contents of $1: ls -F $1 fi shift echo There $# items echo left on the cmd line done

Конструкция for(1) Для каждого элемента из списка выполнение цикла повторяется, после чего переменной присваивается значение следующего элемента списка и так до тех пор, пока список не будет исчерпан. Синтаксис: for переменная in список do список_А done Выполнение цикла for происходит следующим образом: 1. Shell-переменной переменная присваивается в качестве значения первая строка из списка. 2. Выполняются команды списка_А. 3. Shell-переменной переменная присваивается в качестве значения следующая строка из списка. 4. Выполняются команды списка_А. 5. Цикл продолжается до тех пор, пока не будут исчерпаны все элементы из списка.

Конструкция for(2) список исчерпан for переменная in список присвоение переменной значения следующего элемента списка do список_А done

Конструкция for(3) Пример: $ cat test_for for X in do echo 2 * $X is \c let X=X*2 echo $X done $ test_for 2 *1 is 2 2 *2 is 4 2 *3 is 6 2 *4 is 8 2 *5 is 10

Конструкция for(4) Пример: Цикл выполняется по списку, который может быть создан посредством подстановки команд $ cat example_A for NAME in $(grep home /etc/passwd | cut -f1 -d: ) do mail $NAME < mtg.minutes echo mailed mtg.minutes to $NAME done

Конструкция for(5) Пример: $ cat example_B for FILE in $* do if test -d $FILE then ls -F $FILE fi done

Конструкция for(6) Если требуется использовать один и тот же список несколько раз, то его можно сохранмить в файле. Затем, используя команду cat, можно сгенерировать список для своего цикла for способом, использованным в примере: $ cat students user1 user2 user3 user4 $ cat for_students_file_copy for NAME in $(cat students) do cp test.file /home/$NAME chown $NAME /home/$NAME/test.file chmod g-w,o-w /home/$NAME/test.file echo done $NAME done

Использование в списке цикла аргументов командной строки Можно создать список цикла из аргументов командной строки следующим образом: for i in $* do cp $i $HOME/backups done или for i do cp $i $HOME/backups done

Конструкции break, continue, exit break [n]Прекращает текущее выполнение цикла и передает управление первой (или с номером n) команде после done. continue [n]Останавливает выполнение текущей итерации цикла и передает управление на начало очередной (или с номером n) итерации вложенного цикла. exit [n]Останавливает выполнение shell-программы и формирует код завершения n.

Команды break и continue: примеры while true do echo Enter file to remove:\c read FILE if test ! -f $FILE then echo $FILE is not a regular file continue fi echo removing $FILE rm $FILE break done

Shell-программирование: циклы. Заключение. let выражениеОценивает значение арифметического выражения ((выражение)) while условие is истина do... doneцикл while until условие is истина do... doneцикл until for переменная in список do... doneцикл for break [n]прерывание цикла continue [n]прекращение выполнения текущей итерации цикла exit [n]прекращение выполнения shell-программы

Модуль 17 Shell-программирование: сигналы и прерывания

Что такое сигнал? Сигнал - некоторая переменная, передаваемая процессу, когда наступает определенное событие СигналСобытие EXITВыход из shellа HUPЗависание - посылается фоновому процессу при выходе из системы INT + - прерывание QUIT + - прекращение работы (генерирует файл ядра) KILLУничтожение процесса TERMПрекращение работы программы Команда kill передает сигнал, заданный в явном виде, процессу kill [-s сигнал] идентификатор_процесса (PID)

Что такое прерывание? Прерывание - способ захватывания сигналов, которые могут быть посланы процессам, и выполнения в соответствии с видам сигнала некоторого действия. Программы обработки прерываний (обработчики прерываний) - действия в ответ на прерывания.

Команда trap Синтаксис : trap команды сигнал [ сигнал... ]выполняются команды по получении сигнала Команда trap может быть использована в shell-программах с целью перехвата сигнала до того, как он удалит(уничтожит) процесс и выполнения некоторого дополнительного или альтернативного действия. Команду trap следует применить для указания в явном виде сигналов и связанных с ними соответствующх действий, которые должны быть выполнены. Команды могут представлять собой список команд системы UNIX, отделяемых ;. Можно бакже создать shell-программу, которая выполнит требуемые действия и указать имя этой программы в качестве аргумента. Обычно команды trap помещаются в начале shell-программы. Сигналы о прерывании определются shellом, когда он читает команду trap. Прерывания активизируются по получении соответствующего сигнала.

Команда trap Пример: $ cat > mytrap trap echo bye; exit INT QUIT TERM while true do echo hello done $ mytrap hello bye нажать + $

Команда trap Виды действий с сигналами прерываний : Перехват сигнала. Вместо прекращения выполнения процесса будут выполнены указанные специальные команды. Игнорирование сигнала. Используется если shell-программа работает с важными файлами и важно сохранить их содержимое, несмотря на прерывание. Сбрасывание сигналов прерывания. После захвата или игнорирования команда trap умолчанию.Обычно такое действие связано с завершением процесса. Это не вызовет сброса прерываний по отношению к действиям, которые были заданы раньше, чем задано игнорирование прерываеий. Сигнал NULL посылается процессом при нормальном завершении. Он используется для того, чтобы задать действие, которое должна выполнить shell-программа после нормального завершения процесса.

Игнорирование сигналов прерывания Синтаксис : trap сигнал [ сигнал... ] Пример: $ cat > mytrap2 trap INT while true do echo hello done $ mytrap2 hello hello нажать + (проигнорирован) hello hello нажать + (проигнорирован) $ Сигнал KILL не может быть проигнорирован!

Размещение команды trap в программе Помещайте команду в начале программы для управления удалением временных файлов, если выполнение программы прекращается: trap rm /tmp/tempfile;exit INT QUIT TERM Помещайте команду перед критическим участком программы для того, чтобы игнорировать возможные сигналы прерывания: trap INT QUIT TERM С помощью команды trap восcтанавливайте действие системы, принятое по умолчанию, когда выполняется участок программы, требующий нормального завершения: trap INT QUIT TERM

Сигналы и прерывания: заключения СигналЛогическая переменная, посылаемая shell-программе по наступлении определенного события Выход из EXIT - сигнал выхода системы + INT - сигнал прерывания + QUIT - прекращение работы kill -s сигнал идент_процесса Передача сигнала процессу с номером идент_процесса kill идент_процесса Передача сигнала TERM процессу с номером идент_процесса kill -s KILL идент_процесса Передача сигнала безусловного уничтожения процессу с номером идент_процесса trap команды сигналПерехват сигнала и запуск команды stty -aПросмотр сигналов

Модуль 18 Хранение файлов во внешней памяти

Запись файлов на ленту Для записи файлов на ленту вы должны знать имя приборного файла Вашего накопителя на магнитной ленте Типичные имена: /dev/rmt/0m9-ти дорожечная лента или DDS лента /dev/rmt/c0t3d0BEST Выясните у системного администратора, через какой приборный файл осуществляется доступ к накопителю на магнитной ленте. Следующие команды позволяют создавать резервные копии: tar cpio

Команда tar Синтаксис : tar –ключ [f имя_файла ] [файл … ] ведение архива Ключи: сСоздается новый архив xФайлы считываются из архива tРассматривается таблица содержимого архива rФайлы записываются в конец архива uФайлы записываются в архив, если они созданы заново или их содержимое подверглось изменению Опции: vВывод на экран имен файлов при их архивировании или восстановлении по ним содержимого утерянных файлов f файлУказывает файл, куда будет записываться архив.

Команда tar Примеры : Создать архив файлов: $ tar –cvf my_archive myfile $ tar –cvf /dev/rmt/0m myfile Прочитать таблицу содержимого архива файлов: $ tar –tvf my_archive $ tar –tvf /dev/rmt/0m Считать файл из архива: $ tar –xvf my_archive myfile $ tar –xvf /dev/rmt/0m myfile

Команда tar Примеры : Создание резервной копии $ (cd directory_name; tar –cvf - *) | (cd target; tar –xvf -)

Команда cpio Два режима: cpio –o [cvx]Генерация архива. Список файлов читается со стандартного ввода. Архив пишется на стандартный вывод. cpio –i [cmdtuvx]Восстановление из архива. Архив читается со стандартного ввода. Примеры: Создание архива файлов в текущем каталоге: $ find. | cpio –ocv > my_archive $ find. | cpio –ocv > /dev/rmt/0m Восстановление всех файлов из архива: $ cpio –icdmv < my_archive $ cpio –icdmv < /dev/rmt/0m

Опции команды cpio -o-iНазначение опции -c Пишется заголовок в ASCII формате --dПересоздается в нужном виде структура каталога --mОстается текущая дата, соответствующая времени внесения изменений (важно для осуществления контроля за хранящимися версиями файлов --tВывод таблицы, описывающей содержимое архива --uБезусловное восстановление (если файл уже существует, то указание этой опции приводит к перезаписи его содержимого) -v Выводится список скопированных файлов -x Обрабатываются специальные (приборные файлы)

Команда cpio Примеры: Чтение таблицы содержимого архива: $ cpio –ict < /dev/rmt/0m Восстановление одного файла: $ cpio –icudm "filename" < /dev/rmt/0m Восстановление всех файлов, чьи имена удовлетворяют заданному образцу: $ cpio –icudm "*filename*" < /dev/rmt/0m

Использование команды find при резервном копировании Может создавать список относительных маршрутных имен find. абсолютных маршрутных имен find /home/user3 Синтаксис: find список_маршрутных имен [выражение]

Модуль 19 Использование сетевых возможностей

Что такое локальная сеть? Пример топологии локальной сети с общей шиной. HP Series 300/400 System ARPA Berkeley NS HP Series 800 System ARPA Berkeley NS PC HP Vectra ARPA Non-HP Non-UNIX System ARPA HP Series 700 ARPA Berkeley Non-HP UNIX System ARPA Berkeley HP 3000 System ARPA NS HP 3000 System ARPA NS Терминатор

Сервисы локальной сети (LAN) Две группы сервисов локальной сети: - ARPA сервисы (telnet, ftp) - Berkeley сервисы (rcp, rlogin, remsh) Сервисы позволяют: - Входить в систему на удаленной машине - Передавать файлы между узлами сети - Осуществлять удаленный доступ к файлам

Команда hostname Синтаксис: hostnameСообщает имя Вашего компьютера в сети Примеры : $ hostname fred $ $ more /etc/hosts fred barney wilma betty Для того, чтобы иметь возможность использовать любой сервис локальной сети, вы должны быть зарегистрированы пользователем на удаленной машине

Команда telnet Синтаксис: telnet имя_компьютераARPA сервис для удаленного входа в другой компьютер Все виды выполняемых вами работ будут реализовываться на удаленной машине. Ваш компьютер будет только обеспечивать прием и передачу информации на терминал через локальную сеть. Для прекращения сеанса связи выйдите с удаленной машины, используя +, или exit. Примеры : $ telnet fred Trying … Connected to fred Escape character is '^]". HP-UX fred /715 login:

Команда ftp (протокол передачи данных) Синтаксис: ftp имя_компьютераARPA сервис по передаче файлов на удаленную машину и получение их от него. ftp команды: get чтение файла с удаленной машины putпересылка файла с Вашей машины на удаленную lsвыдача списка файлов, находящихся на удаленной машине ?выдача списка всех ftp-команд help вывод краткого описания команды quitвыход из ftp

Команда ftp. Примеры. $ ftp fred Connected to fred. 220 fred FTP server [Version Tue Jul 28 23:46:52 GMT 1992) ready Name (fred:gerry): Password (fred:gerry) : Enter vour password and press 331 Password required for gerry. 230 User gerry logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> put funfile /tmp/funfile 200 PORT command successful. 150 Opening BINARY mlde connection for /tmp/funfile/ 226 Transfer complete bytes sent in 0.19 seconds (20.57 Kbytes/sec)

Команда ftp. Примеры. ftp> ls /tmp 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls /tmp. -rw-rw-rw- 1 root sys 347 Jun exercises -rw-rw-rw- 1 root sys 35 Осt cronfile -rw-rw-rw- l root sys 41 Jul fio -rw-rw-rw- 1 root sys 153 Осt initlaserjet 226 Transfer complete. ftp> quit 221 Coodbye. $

Команда rlogin Синтаксис: rlogin имя_компьютераBerkeley сервис по удаленному входу в другой компьютер rlogin пытается загрузить вас, используя локальной пользовательское имя. Если системный администратор сконфигурировал файл/etc/hosts.equiv, то пароль запрашиваться не будет Если в Вашем домашнем каталоге создан файл.rhosts, то вход в удаленный компьютер также можно вести без ввода пароля (информация о формате файла.rhosts находится в hosts.equiv(4)). Пример: $ hostname barney $ rlogin fred Password: $ hostname fred $ exit $ hostname barney

Команда rcp Синтаксис: rcp имя_пути_файла_источника имя_пути_файла_преемника Berkeley сервис, обеспечивающий передачу файла на или с удаленном машины. Работает подобно команде cp. Имена удаленных файлов указываются в виде имя_компьютера:имя_пути Если осуществляется копирование в или из локального файла, можно отбросить задание имени компьютера в сети и двоеточие Пример: $ rcp funfile fred:/tmp/funfileпередача файла с локальной машины $ rcp fred:/tmp/funfile barney:/tmp Для работы команды rcp должен быть правильно сконфигурирован файл /etc/hosts.equiv или.rhosts.

Команда remsh Синтаксис: remsh имя_компьютера команда Berkeley сервис по запуску на выполнение команды на удаленной машине Пример: $ hostname barney $ remsh fred ls /tmp backuplist crout fred.log update.log $ remsh fred ps –ef … $ remsh fred cat /etc/hosts | more $ cat myfile | remsh fred lpпечать файла на принтере, подключенном к другому компьютеру Для работы команды rcp должен быть правильно сконфигурирован файл /etc/hosts.equiv или.rhosts.

Команда rwho (Berkeley) Синтаксис: rwhoобеспечивает вывод, подобный команде who; выводит на экран имена пользователей в сети, выполняющих со своих машин команду rwho Пример: $ rwho user1barney:tty0p1Jul188:23 user2wilma:tty0p1Jul189:44 user3fred:tty0p1Jul188:56

Команда ruptime (Berkeley) Синтаксис: ruptimeвыводит на экран данные о состоянии каждой машины в локальной сети; каждая машина должна быть опрошена посредством команды rwho Пример: $ ruptime barneyup3:101 usersload1.32, 0.80, 0.30 fredup1+5:154 usersload1.47, 1.16, 0.30 wilmadown0:00