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

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

  • Upload
    necia

  • View
    83

  • Download
    0

Embed Size (px)

DESCRIPTION

Модуль 1-2. Введение в UNIX. Вход в систему и простейшие действия. Что такое операционная система?. Магнитные диски. Пользователи. Оперативная память. Операционная система. Центральный процессор. Программы. Сеть. Потребители. Принтеры. Ресурсы. Основные компоненты UNIX. - PowerPoint PPT Presentation

Citation preview

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

Модуль 1-2.Введение в UNIX.

Вход в систему и простейшие действия.

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

Что такое операционная система?

Операционная система

Пользователи

Программы

Потребители

Магнитные диски

Оперативная память

Центральныйпроцессор

Сеть

Принтеры

Ресурсы

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

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

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

Отличительные особенности UNIX

• Иерархическая файловая система

• Мультизадачный режим работы

• Обслуживание многих пользователей

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

Типичный сеанс работы в системе

• Вход в систему для идентификации пользователя и получения доступа к системе

• Выполнение команд, производящих необходимые действия

• Выход из системы для завершения сеанса работы

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

Вход и выход из системы

login: user1 <Return> Вход в систему

Password: Входные сообщения

Welcome to HP-UX

Erase is backspace

Kill is CTRL-U

$ date Выполнение

Fri Jul 1 11:03:42 EDT 1994 требуемых действий

$ другие команды

$ exit или <Ctrl>+<d> <Return> Выход из системы

login:

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

Интерпретатор Shell

ShellShell

Выполнениекоманд

Выполнениекоманд Средства настройки

средыСредства настройки

среды

НазначениепеременныхНазначениепеременных

Подстановка переменных

Подстановка переменных

Генерацияимен файловГенерация

имен файлов

Интерпретируемыйязык

программирования

Интерпретируемыйязык

программирования

Подстановкакоманд

Подстановкакоманд

КонвейерыКонвейеры

Перенаправлениеввода/вывода

Перенаправлениеввода/вывода

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

Формат командной строки

Синтаксис:

$ команда [-опции] [аргументы] <Return>

Примеры

$ date <Return> Аргументы отсутствуют

Fri Jul 1 11:10;45 EDT 1995

$ echo hello! <Return> Один аргумент

hello!

$ echohello! <Return> Неверный синтаксис

sh: echohello!: not found

$ ls -F <Return> Одна опция

dira/ dirb/ f1 f2 prog1* prog2*

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

Вторичное приглашение к вводу

$ echo ‘Hello, <Return> Ввод открывающегося апострофа

> world!’ <Return> Закрывающий апостроф

Hello, world!

$ ( <Return> Ввод открывающей скобки

> <Ctrl>+<c>

$ stty -a Определяет управляющую последовательность для

прерывания команд

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

Справочник

Справочник HP-UX содержит:

Раздел Описание

Раздел 1 Команды пользователя

Раздел 1m Команды обслуживания системы

Раздел 2 Системные вызовы

Раздел 3 Функции и библиотеки модулей

Раздел 4 Форматы файлов

Раздел 5 Смешанные темы

Раздел 7 Файлы устройств (специальные файлы)

Раздел 8 Глоссарий

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

Содержание страниц справочника

NAME EXAMPLES

SYNOPSYS WARNINGS

DESCRIPTION DEPENDENCIES

EXTERNAL INFLUENCE AUTHOR

NETWORKING FEATURESFILES

RETURN CODE SEE ALSO

DIAGNOSTICS BUGS

ERRORS STANDART CONFORMANCE

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

Оперативный справочник

Синтаксис:

man [-k|X] ключевое_слово|команда

где X-номер одного из разделов справочника

Примеры:

$ man date Выводится описание команды «date»

$ man -k copy Выводятся статьи с ключевым словом «copy»

$ man passwd Выводится статья «passwd» - раздел 1

$ man 4 passwd Выводится статья «passwd» - раздел 4

<Space> - вывести следующую страницу

<Return> - вывести следующую строку

<q> - выйти из команды man

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

Множественность статей в справочнике

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:

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

Команда id

Синтаксис:

id Выводит идентификатора пользователя и его группы для данного сеанса связи

Примеры:

$ id

uid=303 (user3) gid =300 (class)

/etc/passwd файл с пользовательскими идентификаторами

/etc/group файл с идентификаторами групп

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

Команда who

Синтаксис:

who [am i] Сообщает информацию о пользователях, whoami работающих в системе

Примеры:

$ who

root tty1p5 Jul 01 08:01

user1 tty1p4 Jul 01 09:59

user2 tty0p3 Jul 01 10:01

$ who am i

user2 tty0p3 Jul 01 10:01

$ whoami

user2

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

Команда date

Синтаксис:

date Выводит дату и время

Примеры:

$ date

Fri Jul 01 11:15:55 EDT 1994

Примечание:

Системную дату и время может изменить только администратор системы

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

Команда passwd

Синтаксис:

passwd Назначает входной пароль

Примеры:

$ passwd

Changing password for user3

Old password:

New password:

Re-enter new password:

Ограничения при задании пароля:

• минимум шесть символов

• по крайней мере две буквы• по крайней мере один не буквенный символ

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

Команда echo

Синтаксис:

echo [arg] Отображает свои аргументы на экран терминала

Примеры:

$ echo how are you

how are you

$ echo 123 abc

123 abc

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

Команда banner

Синтаксис:

banner [arg] Выводит на экран аргументы заглавными буквами

Примеры:

$ banner hеllo

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

Команда write

Синтаксис:

write username [tty] Посылает сообщение пользователю username, если он работает в системе

Пример:

user1 user2$ write user2 Message from user1 (tty05)

Are you going to the meeting? Are you going to the meeting?

$ write user1

I will be there <Ctrl>+<d>

Message from user2 (tty04)

I will be there

It is fine <Ctrl>+<d> Message from user1 (tty05)

It is fine

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

Команда mesg

Синтаксис:

mesg [y|n] Разрешает или запрещает «писать» на терминал

Примеры:$ mesg

is y

$ mesg n

$ mesg

is n

$ mesg y

$ mesg

is y

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

Команда 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.

<Ctrl>+<d> Завершение сообщения

$

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

Утилита mail

Команды

? Помощь

q Выход из утилиты

x Выход без изменения содержимого почтового ящика

d Уничтожение предыдущего сообщения

s [file] Сохранение сообщения в файле (по умолчанию файл с именем mbox

<Return> Вывод на экран следующего сообщения

+ Вывод на экран следующего сообщения

- Вывод на экран предыдущего сообщения

!cmd Выполнение команды системы UNIX, не выходя из утилиты mail

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

Команда mailx

• Позволяет отвечать на почту

• Дает возможность манипулировать сообщениями, используя их порядковые номера

• Добавляет заголовок к почтовому сообщению

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

Команда news

Синтаксис:

news [-a] [-n] [headline] Выводит на экран терминала

новости системы

Примеры:$ news Выводит последние новости

$ news -a Выводит все новости

$ news - n Выводит заголовки новостей

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

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

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

Иерархия файловой системы

/

sbin tmpstandvaroptetcdevusr home

group passwd .profile vmunix

user3user2user1

mail news tmp vue

contribbin lib local sbin share vue

man

cp ls man sh tar vi- файл

- каталог

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

Маршрутные имена файлов

/

tmp usrhome

user1 user2 user3

f1

f1

memo

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

Относительные маршрутные имена файлов•начинаются от текущего положения пользователя•никогда не начинаются знаком /•уникальны только по отношению к текущему положению•обычно короче, чем абсолютное маршрутное имяuser3/f1user3/memo/f1f1

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

Особые каталоги

/

tmp usrhome

user1 user2 user3

f1

f1

memo

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

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

Основные команды файловой системы

pwd Выводит имя текущего каталога

ls Выводит список файлов и каталогов, находящихся в текущем каталоге

cd Изменяет текущий каталог пользователя

find Осуществляет поиск файлов

mkdir Создает каталог

rmdir Удаляет каталог

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

Команда pwd

Синтаксис:

pwd Выводит имя рабочего каталога

Примеры:

/

tmp usrhome

user1 user2 user3

f1

f1

memo

$ pwd/home/user3

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

Команда ls

Синтаксис:

ls [-adlFR] [маршрутное имя(имена)] -выводит содержимое каталога• если команда вводится без аргументов, выводятся имена файлов и каталогов,

находящихся в текущем каталоге

• в качестве аргументов можно указывать и относительные и абсолютные маршрутные имена файлов

• допускается задание ряда опций:

-a - выводит имена всех файлов, в том числе “невидимых”(начинаются с точки(.))

-d - вычисляет характеристики каталога вместо представления его содержимого

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

-F - добавляет знак / к имени каждого каталога и * к имени каждого исполняемого файла

-R - рекурсивно перечисляет файлы в данном каталоге и во всех его подкаталогах

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

Сокращения команд в HP-UX

Команда системы UNIX Эквивалент в HP-UX

ls -F lsf

ls - l ll

ls - R lsr

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

Команда cd

Синтаксис:

cd [имя каталога] Изменяет текущий каталог

• имя каталога - абсолютное или относительное маршрутное имя каталога, в который надо перейти

• если команда вызвана без аргументов, пользователь окажется в HOME-каталоге

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

Команда find

Синтаксис:

find список_имен выражение Осуществляет упорядоченный поиск в файловой

системе

• список_имен - список имен каталогов, в которых осуществляется поиск

• выражение - задает критерий поиска и действия

• ключевым словам в выражении предшествует знак -

Примеры$ find . -newer f1 Найти в текущем каталоге файлы, более новые чем

f1

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

Команды mkdir и rmdir

Синтаксис:

mkdir [-p] имя(имена)_каталога Создание каталога

• [-p] - создаются промежуточные каталоги, если они до этого не существовали

rmdir [-i] имя(имена)_каталога Удаление каталога

• удаляемые каталоги должны быть пустыми

• нельзя удалить каталог между текущим и корневым

• [-i] - удаление с подтверждением

• rm -r имя_каталога - удаление непустого каталога

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

Файловая система - краткое резюме

Файл Контейнер для данных

Каталог Контейнер для файлов и других каталогов

Дерево Иерархическая структура UNIX системы

Маршрутное Идентифицирует положение файла или каталога

имя в иерархии

HOME Маршрутное имя входного каталога пользователя

pwd Выводит на экран текущий каталог

cd Изменяет текущий каталог

ls Выводит содержимое каталога

find Отыскивает файлы, специфицируемые опциями

mkdir Создает каталоги

rmdir Удаляет каталоги

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

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

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

Что такое файл?

Файл - хранилище данных или канал связи с устройством

• Каждый файл имеет имя и может содержать данные, которые размещаются на диске.

• Имеется несколько различных типов файлов:

- Обычные файлы

· текст, данные, графические данные

· исполняемые программы

- Каталоги

- Файлы устройств

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

Что можно делать с файлами?

ls Просмотр характеристик файла

cat Просмотр содержимого файла

more Поэкранный просмотр содержимого файла

lp Печать файла

cp Копирование файла

mv Изменение имени файла

Перемещение файла в другой каталог

ln Создание ссылки на файл (файла псевдонима)

rm Удаление файла

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

Характеристики файлов

$ 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

тип ссылки группа дата имя файла

файла владелец модификации файла

режим доступа размер файла

к файлу

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

Типы файлов

- Обычный файл

d Каталог

l Символическая ссылка

n Сетевой специальный файл

c Байт-ориентированный специальный файл (терминалы, принтеры)

b Блок-ориетированный специальный файл (диски)

p Именованный канал (канал внутри

межпроцессорного взаимодействия)

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

Команда cat

Синтаксис:

cat [файл] Объединяет и выводит содержимое файла

Примеры$ cat f1 Вывод на экран содержимого файла f1

$ cat f1 f2 Вывод на экран содержимого файлов f1 и f2

$ cat Ввод с клавиатуры

abs

<Ctrl>+<d>

abc

$ cat f1 f2 > f3 Перенаправление вывода файлов f1 и f2 в f3

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

Команда more

Синтаксис:

more [файл] ... Осуществляет поэкранный вывод содержимого файла

Примеры$ more f1

……

--f1 (20%)--

<Q> или <q> Выход из команды more

<Return> Вывод очередной строки

<Space> Вывод очередного экрана с информацией

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

Команда tail

Синтаксис:

tail [-n] [имя_файла] ... Вывод последних n строк файла(ов)

Примеры$ tail -1 note

soon as it is available

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

Система спулинга строчных принтеров

• Система спулинга строчных принтеров (lp spooler) - утилита, координирующая работу принтера.

• Функции системы спулинга

– Организация очереди файлов к принтерам.

– Определение состояния принтеров и запросов к ним.

– Прерывание любого задания для принтера.

Пользователь 1

Пользователь 2

Пользователь n

Система спулингастрочных принтеров(lp spooler)

Вывод

Принтер

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

Команда 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 -t”confidential”-n2 file1 file2

request id is laser-114 (1 file)

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

Опции команды lp

lp [-dпринтер] [-nчисло] [-oопция] [-tзаголовок] [-w][имя_файла...]

-dпринтер Имя принтера, при отсутствии поставит документ в очередь к принтеру, назначенному в системе

принтером по умолчанию

-nчисло Число копий, по умолчанию 1

-tзаголовок Печать заголовка на титульном листе

-oопция Указание опций, специфических для принтера ( тип шрифта, шаг печати, толщина линий,

структурированность данных и т.д.)

-w Выдача сообщения на терминал пользователя после распечатки

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

Команда lpstat

Синтаксис:

lpstat [-t]

• Команда lpstat сообщает о запросах, поставленных в очередь на печать

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

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

Команда lpstat

Примеры:

$ lpstatrw-55 john 4025 Jul 6 14:26:33 1994$$ lpstat -tscheduler is runningsystem default destination: rwdevice for rw: /dev/lp2235rw accepting requests since Jul 1 10:56:20 1994printer rw now printing rw-55. enabled since Jul 4 14:32:52 1994rw-55 john 4025 Jul 6 14:26:33 1994 on rwrw-56 root 966 Jul 6 14:27:58 1994

$

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

Команда cancel

Синтаксис:

cancel идентификатор [идентификатор...]

cancel принтер [принтер...]

Примеры:• Отмена задания, поставленного в очередь командой lp

$ cancel dp-115

• Отмена текущего задания на указанном принтере $ cancel laser

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

Команда cp

Синтаксис:

cp [-i] файл вых_файл Копирование файла

cp [-i] файл [файл...] вых_каталог Копирование файлов в каталог

cp -r [-i] каталог [каталог...] вых_каталог Копирование каталогов

• Требуется указать как минимум два аргумента - источник и преемник

• Для любого из аргументов допустимо использование относительных и/или абсолютных маршрутных имен.

• Если файл-преемник не существует, он будет создан.

• Если преемник - каталог, файл будет скопирован в него с сохранением имени.

• Опция -i приводит к выдаче предупреждения о том, что файл-преемник уже существует и может быть изменен

• При копировании нескольких файлов преемником должен быть каталог.

• Файл не может быть скопирован сам в себя.

• Опция -r должна быть использована при копировании каталогов.

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

Команда mv

Синтаксис:

mv [-i] файл новый_файл Переименование файла

mv [-i] файл [файл...] вых_каталог Перемещение файлов в каталог

mv [-i] каталог [каталог...] вых_каталог Переименование или перемещение

каталогов

• Требуется указать как минимум два аргумента - источник и преемник

• Для любого из аргументов допустимо использование относительных и/или абсолютных маршрутных имен.

• Если файл-преемник уже существует, его содержимое будет заменено содержимым файла-источника.

• Если преемник - каталог, файл будет скопирован в него с сохранением имени.

• Опция -i приводит к выдаче предупреждения о том, что файл или каталог-преемник уже существует и может быть изменен

• При перемещении нескольких файлов преемником должен быть каталог.

• Если в качестве источника указан каталог, он переименовывается и получает имя преемника.

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

Команда 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.link f1

Это файл, к которому можно обращаться по

нескольким именам

Пользователь находитьсяздесь

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

Команда rm

Синтаксис:rm [-if] имя_файла [имя_файла]... Удаление файлов rm -r[if] каталог [имя_файла ...] Удаление каталогов

• -f Безусловное удаление поименованных в команде файлов• -r Рекурсивно удаляется содержимое каталогов, указанных в

командной строке• -i Режим интерактивного удаления

Примеры$ ls -F $ rm -i f2

f1 f2 fruit/memo f2? y

$ rm f1 $ rm fruit $ ls -F rm: fruit directory f2 fruit/memo $ rm -r fruit

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

Список команд управления файлами и каталогами

ls -l Выводит характеристики файла

cat Объединяет и выводит на экран содержимое нескольких файлов

more Форматирует и выводит на экран содержимое файлов

tail Выводит на экран окончание файла

cp Копирует файлы и каталоги

mv Перемещает или переименовывает файлы и каталоги

ln Создает ссылки на файл

rm Удаляет файлы или каталоги

lp Посылает запросы на вывод информации на принтеры

lpstat Выводит состояние системы спулинга

cancel Отменяет исполнение запросов, стоящих в очереди к принтеру

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

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

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

Permission Права на чтение, запись, выполнение файла

ls (ll, ls -l) Определение прав доступа, установленных для файла

chmod Изменение прав доступа к файлу

umask Изменение прав доступа, назначаемых по умолчанию

chown Изменение владельцев файла

chgrp Изменение группы файла

su Изменение идентификатора пользователя

newgrp Изменение идентификатора группы пользователя

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

Кто имеет доступ к файлу?• Тройственная структура, определяющая доступ к файлу или

каталогу 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 f2drwxr-xr-x 2 user3 class 1024 Jul 24 12:03 memo

Владелец Группа

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

Типы доступа

Для каждого файла или каталога возможны три типа доступа:

-Read (чтение)

Может быть просмотрено содержимое файлов или каталогов

-Write (запись)

Содержимое файлов или каталогов может быть изменено

-Execute (выполнение)

Файл может использоваться как команда. Каталог может стать текущим рабочим каталогом

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

Права доступа к файлам

Права доступа к файлам выводятся на экран командой 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

Права

владельца Группа файла

Права группы Владелец файла

Права остальных пользователей

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

Команда chmod

Синтаксис:

chmod режим_доступа файл ... Изменение прав доступа к файлу(ам)

режим_доступа [кто[оператор]право][...]

кто владелец (user), группа (group), остальные (other) или все (all)

оператор + (добавить), - (отнять), = (присвоить)

право чтение (read), запись (write), выполнение (execute)

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

Команда 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 ---

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

Команда chmod

Примеры/dev/tty0p1 - файл устройства, отвечающий за связь терминала

пользователя с компьютером

$ ls -l /dev/tty0p1

crw--w--w- 1 bin bin 58 ox000003 Feb 15 11:34 /dev/tty0p1

$ mesg n

$ ls -l /dev/tty0p1

crw------- 1 bin bin 58 ox000003 Feb 15 11:34 /dev/tty0p1

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

Команда chmod. Задание прав доступа в числовом формате

1. Каждое право доступа обозначается следующими числами:read=4write=2execute=12. Числа складываются для каждой категории пользователей (владельца,

группы, остальных) и объединяются в трехразрядное число.

Примеры1. user group others

rw- r-- ---4+2+0 4+0+0 0+0+06 4 0chmod 640 имя_файла

2. chmod 000 имя_файла Отмена всех прав доступа к файлу

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

Команда umask

Синтаксис:

umask [-S] [режим_доступа] ... Пользовательская маска создания файла

Примерыправа доступа по умолчанию: rw-rw-rw-

установка новых прав доступа по умолчанию rw-r--r--

$ umask g=r, o=

$ umask -S Вывод текущей маски создания файла в символьном представлении

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

Команда touch

Синтаксис:

touch [-amc] [-t время] имя_файла... Обновляет время последнего доступа и/или

модификациии файла Опции:

-a [время] Установить время последнего доступа к файлу равным время

-m [время] Установить время последней модификации файла равным время

-c Если файл не существует, не создавать его

-t время Использовать время вместо текущего

время [[cc]yy]mmddhhmm[.ss]

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

Команда touch

Примеры:$ ll-rw-r--r-- 1 karenk users 25936 Aug 24 09:53 firstfile-rw-r--r-- 1 karenk users 10245 Aug 24 09:53 secondfile $ touch newfile $ ll-rw-r--r-- 1 karenk users 25936 May 24 09:53 firstfile-rw-r--r-- 1 karenk users 0 Aug 25 10:02 newfile-rw-r--r-- 1 karenk users 10245 Aug 24 09:53 secondfile$ touch secondfile $ ll-rw-r--r-- 1 karenk users 25936 May 24 09:53 firstfile-rw-r--r-- 1 karenk users 0 Aug 25 10:02 newfile-rw-r--r-- 1 karenk users 10245 Aug 25 10:05 secondfile $

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

Команда 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----- 1 user3 class 0 Jul 24 11:10 test_file2

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

Команда chown

Синтаксис:

chown владелец [:группа] имя_файла Изменение владельца файла и, дополнительно, группы

Пример:

$ id

uid=303 (user3), gid=300 (class)

$ cp fl /home/user2/fl

$ ls -1 /home/user2/fl

-rw-r----- 1 user3 class 3967 Jan 24 13:13 fl

$ chown user2 /home/user2/fl

$ ls -1 /home/user2/fl-rw-r----- 1 user2 class 3967 Jan 24 13:13 fl

•Только владелец файла (или суперпользователь) может изменить владельца файла.

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

Команда 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----- 1 user3 class2 3967 Jan 24 13:13 f3

$ chown user2 f3

$ ls -l f3-rw-r----- 1 user2 class2 3967 Jan 24 13:13 f3

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

Команда su

Синтаксис:

su [имя_пользователя]... Изменение ранее назначенного идентификатора пользователя

Примеры$ ls -1 /usr/local/bin/class_setup-rwxr-x--- 1 class_admin teacher 3967 Jan 24 13:13 f3$ iduid=303 (user3), gid=300 (class)$ su class_adminPassword:$ iduid=400 (class_admin), gid=300 (class)$ /usr/local/bin/class_setup$ <Ctrl>+<d><Return>log out of su session$

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

Команда newgrp

Синтаксис:

newgrp [имя_группы]... Изменяет идентификатор группы

Примеры$ ls -1 /usr/ local/bin/class_setup-rwxr-x--- 1 class_admin teacher 3967 Jan 24 13:13 f3$ iduid=303 (user3), gid=300 (class)$ newgrp teacher$ iduid=303 (user3), gid=33 (teacher)$ /usr/local/bin/class_setup$ newgrp

return to login group status$ newgrp otherSorry$

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

Списки управления доступом 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

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

Списки управления доступом ACL

Уровни управления доступом

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

(u.g,rwx) Указанный пользователь, указанная группа

(u.%,rwx) Указанный пользователь, любая группа

(% . g, rwx) Любой пользователь, указанная группа

(%. %, rwx) Любой пользователь, любая группа

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

Списки управления доступом 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

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

Доступ к файлам - резюме

Permission Права на чтение, запись, выполнение файла

ls (ll, ls -l) Определение прав доступа, установленных для файла

chmod Изменение прав доступа к файлу

umask Изменение прав доступа, назначаемых по умолчанию

chown Изменение владельцев файла

chgrp Изменение группы файла

su Изменение идентификатора пользователя

newgrp Изменение идентификатора группы пользователя•Все каталоги, входящие в полное маршрутное имя файла, должны иметь право на выполнение.

•С целью защиты файла, удаляйте право на запись в этот файл и каталог, в котором он находится.

•Только владелец пользователя (или суперпользователь) может изменить для него права доступа, владельца или группу.

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

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

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

• William Joy, Калифорнийский университет

• vi - это экранный текстовый редактор

• поставляется в большинстве версий системы UNIX

• управляется командами

• включает следующие классы команд:

– общеорганизующие

– управления курсором

– вставки текста

– удаления текста

– вставки ранее удаленного текста

– изменения текста

Что представляет собой редактор vi?

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

vi: Начало сеанса работы

Синтаксис:

vi [имя_файла] Начало сеанса редактирования файла

Примеры$ vi file1

file1 file1

vi file1Диск

file1

Keyboard

Все изменения при редактировании выполняются надкопией файла, размещенной в оперативной памяти

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

vi: Режимы работы редактора

•Командный режим - нажатия клавиш интерпретируются как команды

–исходным является режим, когда начинается сеанс vi редактирования

–нажатие клавиши <Esc> переводит вас в командный режим

–vi команды не отражаются на экране

–ex команды префиксируются двоеточием(:) и отображаются на экране

•Режим ввода - информация, соответствующая нажатым клавишам вводится в файл

Режим последней

строки

Командныйрежим

Режимввода

:/?

Return

i Ia Ao O

ESC

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

Это пример содержимого файла test, который будет рассматриваться далее

~~~ Пометки строк,~ которые не существуют~ в файле~: ex команды сообщения

о режиме работы

vi: Сеанс редактирования

содержимое файла

строки в конце

файла

курсор

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

vi:Завершение сеанса редактирования

<Esc> ZZ <Return> Сохранение файла на диске (на экране не отображается)

<Esc>:wq! <Return> Сохранение файла на диске и выход из редактора

<Esc>:q! <Return> Выход без сохранения

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

Команды управления курсором (1)

h или <BackSpace> Перемещение курсора на одну позицию влево

j Перемещение вниз на одну строку

k Перемещение вверх на одну строку

l или <Space> Перемещение курсора на одну позицию вправо

#w Перемещение вперед на слово (word) за словом

#b Перемещение назад на слово (backword) за словом

#e Перемещение к концу (end) следующего слова

$ Перемещение в конец текущей строки

^ или 0 Перемещение в начало текущей строки

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

Команды управления курсором (2)

G Переход (Go) в конец файла

#G Переход (Go) на строку с номером #

:# Переход на строку с номером #

<Ctrl>+<g> Вывод номера текущей строки

<Return> Переход к первому непустому символу на следующей строке

<Ctrl>+<b> Вывод предыдущего (back) содержимого экрана

<Ctrl>+<f> Вывод следующего (forward) содержимого экрана

<Ctrl>+<u> Возврат вверх (up) на половину экрана

<Ctrl>+<d> Переход вниз (down) на половину экрана

L Переход к последней (last) строке экрана

M Переход к средней (middle) строке экрана

H Переход к первой строке экрана (на первую строку, первый символ)

<Ctrl>+<l> Перерисовка экрана

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

Режим ввода Для переключения в режим ввода используются следующие команды:

a Добавление (append) текста после курсора

i Добавление (insert) текста перед курсором

O Открытие (Open) пустой строки над текущей строкой

o Открытие (open) пустой строки под текущей строкой

A Добавление (Append) текста в конец строки

I Вставка (Insert) текста с начала строки

В режиме ввода:

<Return> Появление новой пустой строки (можно разрезать строки)

<BackSpase> Возвращение влево для исправления введенного

<Esc> Окончание режима ввода. Возвращение в командный режим

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

Удаление текста: команды x,dw,dd,dG

#x Удаление (X out) символа над курсором

#dw Удаление (Delete) текущего слова (Word)

#dd Удаление текущей строки

dG Удаление всех строк от текущей до последней строки файла

d$ Удаление конца строки (от текущей позиции)

d^ Удаление начала строки (до текущей позиции)

Можно задать число, показывающее сколько раз должна быть повторена команда. Например: 3dd - удалить 3 строки

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

Команды отмены произведенных изменений

u Отмена (undo) последнего изменения

U Отмена (Undo) всех изменений в текущей строке

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

Перемещение текста: команды p и P.

dобъект Удаление объекта и сохранение его в буфере

p Вставка (paste) содержимого буфера в текст после курсора

P Вставка (Paste) содержимого буфера в текст перед курсором

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

Копирование текста: команды yw, yy

#yw Копирование (yank) текущего слова в буфер

#yy Копирование текущей строки

yG Копирование строк от текущей до конца файла

y$ Копирование части строки от курсора до конца строки

y^ Копирование части строки от курсора до начала строки

Список команд копирования и вставки

yобъект Копирование (yank) объекта в буфер

p Вставка (paste) содержимого буфера в текст после курсора

P Вставка (Paste) содержимого буфера в текст перед курсором

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

Изменение текста: команды r, R, cw, .

rсимвол Заменяет (replace) символ, помеченный курсором на символ

R Заменяет (Replace) все символы строки, пока не нажата клавиша <Esc>

#сw Изменение текущего слова

#cc Изменение всей текущей строки

cG Изменение всех строк файла от текущей до последней

c$ Изменение части строки от курсора до конца строки

c^ Изменение части строки от курсора до начала строки

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

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

Поиск текста: команды /, n, N

/текст Поиск строки, содержащей заданный текст, начиная от текущей строки до конца

файла с переходом на начало файла

?текст Поиск строки, содержащей заданный текст, начиная от текущей строки до начала

файла с переходом на конец файла

n Поиск следующего вхождения в файл заданной строки текста

N Поиск предыдущего вхождения в файл заданной строки текста

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

Поиск текста по шаблону

[o0]ld_text Поиск old_text или 01d_text.

^текст Поиск строки начинающейся с текста

текст$ Поиск строки заканчивающейся на текст

. Поиск по любому одиночному символу.

символ* Поиск по символу, который может не встретиться ни разу или любое число раз.

. * Поиск по любому символу, который может не встретиться ни разу или любое число раз.

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

Список регулярных выражений (шаблонов для поиска)

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

^текст Текст от начала строки.

текст$ Текст от конца строки.

. Соответствует любому одному символу.

символ* Определяет ноль или любое число повторений символа

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

Примеры составления шаблонов

/ [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»

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

Глобальный поиск и замена - команды ex

:m,ns/шаблон/новый_текст/[g]

Примеры

:1, $s/one/two/

В каждой строке, с первой по последнюю ($), заменить только первое вхождение слова “one” на слово “two”

:.,10s/[oO] [nN] [eE]/two/g

Во всех строках, начиная с текущей по 10-ю, заменить каждое вхождение “one”, причем не важно строчными и.или прописными символами оно представлено, на слово “two”

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

Глобальный поиск и замена - команды ex

:m,ns/шаблон/новый_текст /[g]

m ,n Определяют строки файла, которые обрабатываются командой

s Означает выполнение команды замены (substitute)

шаблон Указывает образец текста для выполнения поиска

новый_текст Указывает текст, на который заменяется текст, найденный по образцу

g Задает выполнение команды глобально (globally) в строке

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

Команды ex

:w запись текущего содержимого буфера на диск

:m,nw файл запись строк с m-ой по n-ую из текущего буфера в файл

:w файл запись текущего буфера в файл

:e файл загрузка файла в буфер редактирования, замещающего старое содержимое буфера

:e ! отмена всех изменений в буфере перезагрузкой в него файла с диска

:r файл добавление содержимого файла после текущего положения курсора

:! chm выполнение команды chm

:set all вывод всех опций сеанса редактирования

:set nu включение опции нумерования строк

:set nonu выключение опции нумерования строк

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

Команды ex

:set опция включение опции режима редактирования

:set noопция выключение опции режима редактирования

:set all вывод всех опций сеанса редактирования

: map отображение на экране клавиш, используемых в командном режиме

:map! отображение на экране клавиш, используемых в режиме ввода

Пример

:set showmod включение вывода сообщения о режиме работы

:set noshowmod выключение вывода сообщения о режиме работы

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

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

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

Что такое Shell?

Выполнениекоманд

Выполнениекоманд Средства настройки

средыСредства настройки

среды

НазначениепеременныхНазначениепеременных

Подстановка переменных

Подстановка переменных

Генерацияимен файловГенерация

имен файлов

Интерпретируемыйязык

программирования

Интерпретируемыйязык

программирования

Подстановкакоманд

Подстановкакоманд

КонвейерыКонвейеры

Перенаправлениеввода/вывода

Перенаправлениеввода/вывода

Shell

Ядро

ОС

Аппаратура

Shell

Пользователи

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

Сравнение характеристик shell'ов

Характеристики Описание POSIX Bourne Когn С

Предыстория (буфер) команд Позволяет сохранять команды в буфере и затеммодифицировать

Да Нет Да Да

их и использовать вновь

Редактирование Способность изменять текущую Да Нет Да Нет

командных строк или ранее выполнявшиеся

командные строки с помощью

текстового редактора

Автоматическое Способность автоматически Да Нет Да Да

завершение имен файлов заканчивать вводимые с клавиатуры имена файлов в

командных строках

Команда alias Возможность изменять имена команд, осуществлять Да Нет Да Да

автоматическое включение опцийкоманд или использовать

короткие псевдонимы для

длинных командных строк

Ограниченные shell'ы Средство защиты, обеспечивающее создание Да Да Да Нет

управляемой среды пользователя

с ограниченными возможностями

Управление Средства для трассировки и Да Нет Да Да

заданиями доступа к процессам, выполняемым в фоновом режиме

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

Возможности POSIX shell'a

• Интерфейс пользователя с расширенными возможностями

-Установка псевдонимов команд

- Автоматическое завершение имен файлов

- Механизм буферирования команд

- Повторный вызов и редактирование командных строк

- Управление заданиями

- Расширенные возможности команды cd

- Расширеннные возможности программирования

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

Установка и отмена псевдонимов команд

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

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

Автоматическое завершение имен файлов

$ more fra <Esc><Esc>

$ more frankenstein <Return>

……..

$ more abc <Esc> <Esc>

$ more abcdef <Esc> =

1)abcdefXlmnop

2)abcdefYlmnop

$ more abcdefВведите <а> для добавления, затем X или Y, после чего нажмите <Esc> <Esc>. Соответствующее имя файла будет автоматически завершено shell'ом

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

Автоматическое завершение имен файлов(2)

$ cd tr <Esc> <Esc> do <Esc> <Esc> r <Esc> <Esc>

$ cd tree/dog.breads/retriiver

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

Буферирование команд•Shell сохраняет команды, которые вводит пользователь в файле предыстории

•Команда history выводит на экран последние 16 введенных команд• Ранее введенные команды можно вызвать повторно, отредактировать и запустить вновь

Синтаксис:

history [-n|a z] Вывод на экран предыстории команд

Пример:$ history -2 Выдача списка из последних двух команд15 cd16 more .profile$ history 3 5 Вывод списка команд с номерами от 3 до 53 date4 pwd5 ls

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

Буферирование команд(2)

Опции:

-n вывод n последних команд

a z вывод команд с номерами от a до z

ПеременныеHISTSIZE количество доступных пользователю ранее

вводимых команд (по умолчанию 128)

HISTFILE определяет имя текстового файла, создаваемого лоя хранения вводимых команд (по умолчанию .sh_history)

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

Повторный ввод команд

• Для повторного ввода предшествующей команды с номером с следует ввести команду г с

Пример:$ history 3 5 Вывод на экран списка команд с номерами от 3 до 5

3 date4 pwd5 ls

$ r 4 Запуск команды с номером 4pwd/home/kelley

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

Повторный ввод команд(2)

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

Пример:

$ history

1 date

2 cat file1

3 ll

$ r d

Mon Jul 4 10:05:45 1999

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

Повторный вызов команд

• Используется механизм буферирования команд

• Должны быть установлены EDITOR-переменные среды:$ EDITOR=/usr/bin/vi$ export EDITOR

- В ответ на приглашение $, нажмите <Esc> и используйте обычные команды редактора vi для просмотра ранее введенных команд:

· k - просмотр буфера команд назад

· j - просмотр буфера команд вперед

· nG - выдача на экран командной строки с номером п

- Нажмите <Return> для исполнения команды

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

Редактирование командной строки

•Обеспечивается возможность изменять текущую или ранее введенную командную строку

• Нажмите клавишу <Esc> для входа в командный режим

• Вызовите требуемую команду

- нажимая клавишу <k> пока команда не появится на экране

- вводя номер команды, а затем G

•Для редактирования командной строки используйте команды редактора vi

• Не используйте клавиши со стрелками

• Нажмите <Return> для запуска модифицированной команды

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

Среда пользователя

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

Синтаксис:env

Пример:$ envНОМЕ=/home/gerryEDITOR=viTERM=70092…PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin:\/home/gerry/bin

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

Среда пользователя(2)

Среда пользователя содержит следующую информацию:

•Маршрутное имя начального каталога пользователя

•Куда посылать электронную почту пользователя

•Часовой пояс, в котором работает пользователь

•Где shell будет искать команды

•Тип терминала и размеры его экрана

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

Среда пользователя(3)

Перечень наиболее общих переменных среды и их смысловое содержание

TERM, COLUMNS и LINES Описывают параметры используемого терминала

HOME Маршрутное имя начального каталога

PATH Путь поиска команд

LOGNAME Входное имя пользователя, задаваемое при входе в систему

ENV и HISTFILE Специальные переменные POSIX shell'a

Некоторые из этих переменных устанавливаются для каждого пользователя самой системой, другие устанавливаются явно в /etc/profile или .profile.

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

Установка переменных shell'a

•Переменная shell'a имеет имя, которому ставится в соответствие некоторое значение.

•Значение переменной может быть изменено.• Некоторые переменные shell'a определяются в процессе входа пользователя в систему.

•Пользователь может определить новые переменные shell'a.

Синтаксис:

name=value

Пример:

$ PATH=/usr/bin/Xll:/usr/bin

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

Две важные переменные

•Переменная PATH

- список каталогов, в которых shell ищет вводимые пользователем команды

•Переменная TERM

- описывает для запускаемых пользователем программ тип терминала и размер экрана

Пример:

$ env

PATH=/usr/bin:/usr/contrib/bin:/usr/local/binTERM=hp

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

Что происходит при входе в систему?1. getty

•выводит содержимое файла /etc/issue

•выдает приглашение login:

•запускает процесс login

2. login

•определяет допустимость введенного имени пользователя и пароля

•помещает пользователя в начальный каталог

•запускает shell пользователя

3. shell

•выполняет /etc/ profile или /etc/csh.login

•выполняет . profile или . login, находящиеся в пользовательском каталоге

•выполняет .kshrc если файл создан пользователем и его имя присвоено переменной ENV в файле .profile

•запускает пользовательский shell

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

Стартовые файлы 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

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

Внутренние команды shell икоманды UNIX

Внутренние команды встроены в shell:

set, while, if, for

Команды UNIX находятся в /usr/bin:

cdlsmorefile

Система находит команды UNIX, используя переменную PATH.

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

Поиск команд - команда whereis

Синтаксис:

whereis [-b|-m|-s] команда Просматривает список каталогов для поиска указанной

команды

Примеры:

$ whereis if

if :$$ whereis lsls: /sbin/ls /usr/bin/ls /usr/share/man/man1.Z/ls.1$$ whereis cdcd: /usr/bin/cd /usr/share/man/man1.Z/cd.1$$ whereis holdyourhorsesholdyourhorses :

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

Поиск команд - команда whereis(2)

Опции

-b поиск только по двоичным кодам

-m поиск по описаниям команды

-s поиск по исходным текстам

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

Модуль 8.Shell: расширенные

возможности

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

Shell-подстановки

•Подстановка переменных

•Подстановка команд

•Тильда-подстановка

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

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

Shell: хранение переменных

color=bluecount=3

dir_name=/home/user3/tree

PS1=$PATH=/usr/bin:/usr/contrib/bin

HOME=/home/user3TERM=70094a

SHELL=/usr/bin/sh

/usr/bin/sh

Локальные переменные

Программный код

Переменные среды

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

Shell: вывод на экран всех переменных, содержащихся в данный момент в среде

$ envMANPATH=/usr/share/man:/usr/contrib/man:/usr/local/manPATH=/usr/bin:/usr/ccs/bin:/usr/contrib/bin:/usr/local/binLOGNAME=user3ERASE=^HSHELL=/usr/bin/shHOME=/home/user3TERM=hptermPWD=/home/user3TZ=PST8PDTEDITOR=/usr/bin/vi

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

Shell: установка значений переменных

Синтаксис:

переменная=значение

Пример:

$ color=lavender Установка локальной переменной

$ count=3 Установка локальной переменной

$ dir_name=tree/car.models/ford Установка локальной переменной

$ PS1=hi_there$ Изменение переменной среды

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

Подстановка переменных

Синтаксис:

$переменная Указывает 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

<contents of /home/user3/file1>

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

Использование фигурных скобок ({})

•Пусть есть две переменные с именами file и file1. Этим переменным могут быть присвоены значения с помощью следующих операторов:

$ file=this

$ file1=that

$ echo $fileand$file1 ищет переменные fileand и file1

sh: fileand: parameter not set

$ echo ${file}and$filel thisandthat ищет переменные file и file1

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

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

Подстановка переменных(2)$ dir_name=tree/car.models/ford$ echo $dir_nametree/car.models/ford$ ls -F $dir_namesedan/ sports/$ my_ls="ls -aFC"$ $my_ls

./ file.1 tree/

../ 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Использование абсолютного маршрутного имени в качестве значения переменной, которая представляет собой имя файла или каталога, позволяет пользователю вне зависимости от местонахождения в файловой системе, получать доступ к файлу или каталогу

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

Подстановка команд

Синтаксис:

$(команда) Указывает 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

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

Тильда-подстановкиЕсли слово начинается со знака "тильда" (~), то для этого слова формируется расширение. Следует заметить, тильда — подстановка выполняется только если знак (~) указывается в начале слова, а в случае /~home/users тильда—подстановка не осуществляется.Тильда—подстановки выполняются в соответствии со следующими правилами:

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

Символ ~ может быть помещен в псевдоним команды.

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

Тильда-подстановки -пример

$ 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

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

Вывод значений переменных

env Вывод значений переменной среды. Это команда системы UNIX из каталога /usr/bin/env

set Вывод на экран всех определенных к данному времени переменных (локальных и переменных среды), а также их значений. Это команда shell.

unset Удаление значения переменной. Это команда shell.

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

Вывод значений переменных-пример

$ echo $HOME/home/user3

$ envHOME=/home/user3PATH=/usr/bin:/usr/contrib/bin:/usr/local/binSHELL=/usr/bin/sh

$ setHOME=/home/user3PATH=/usr/bin:/usr/contrib/bin:/usr/local/binSHELL=/usr/bin/shcolor=lavendercount=3dir_name=/home/user3/tree

$ unset dir_name

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

Экспортирование локальных переменных в среду

Синтаксис:export [переменная[=значение]] Экспортирование

переменной в среду

Пример:$ color=lavender$ export color$ export count=3$ exportexport PATH=/usr/bin:/usr/ccs/bin:/usr/contrib/bin:/usr/local/binexport color=lavenderexport count=3

Это встроенная команда shell.

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

Передача переменных в приложение

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

Существует один путь передачи данных порожденным процессам - через среду.

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

Наблюдение за процессами

ps [-f] выводит на экран информацию о выполняемых (или ожидающих) процессах в системе

Выдает:

UID идентификатор владельца процесса

PID идентификатор процесса

PPID идентификатор родителя процесса

STIME начальное время процесса

TTY идентификатор терминала, с которого запущен процесс TIME совокупное время выполнения процесса

COMMAND команда,соответствующая данному процессу

exec команда замещение текущего процесса (это встроенная команда shell).

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

Наблюдение за процессами

$ ps -fUID PID PPID С STIME TTY TIME COMMAND

user3 4702 1 1 08:46:40 ttyp4 0:00 -sh

user3 4895 4702 18 09:55:10 ttyp4 0:00 ps -f

$ ksh

$ ps -fUID PID PPID C STIME TTY TIME COMMAND

user3 4702 1 0 08:46:40 ttyp4 0:00 -sh

user3 4896 4702 1 09:57:20 ttyp4 0:00 ksh

user3 4898 4896 18 09:57:26 ttyp4 0:00 ps -f

$ exec ps -fUID PID PPID C STIME TTY TIME COMMAND

user3 4702 1 0 08:46:40 ttyp4 0:00 -sh

user3 4897 4702 18 09:57:26 ttyp4 0:00 ps -f

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

Порожденные процессы и среда

•Порожденные процессы не могут изменить среду родительских процессов.

Пример:$ export color=lavender $ ksh (создание порожденного процесса shell)$ ps -fUID PID PPID С STIME TTY TIME COMMANDuser3 4702 1 0 08:46:40 ttyp4 0:00 -shuser3 4896 4702 1 09:57:20 ttyp4 0:00 kshuser3 4898 4896 18 09:57:26 ttyp4 0:00 ps -f$ echo $colorlavender$ color=red$ echo $colorred$ exit (выход из порожденного процесса shell)$ ps -f (возвра г в родительский процесс)UID PID PPID С STIME TTY TIME COMMANDuser3 4702 1 0 08:46:40 ttyp4 0:00 -shuser3 4895 4702 1 09:58:20 ttyp4 0:00 ps -f$ echo $color lavender

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

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

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

Генерация имен файлов:введение

Выполнениекоманд

Выполнениекоманд

Установки параметров

среды

Установки параметров

среды

Присвоениезначений

переменным

Присвоениезначений

переменным

Подстановка переменных

Подстановка переменных

Генерацияимен файловГенерация

имен файлов

Интерпретируемыйязык

программирования

Интерпретируемыйязык

программирования

Подстановкакоманд

Подстановкакоманд

КонвейерыКонвейеры

Перенаправлениеввода/вывода

Перенаправлениеввода/вывода

Shell

export переменнаяenv

переменная=значениеset

$переменная

переменная=$(команда)

* ? [ ]

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

Генерация имен файлов (расширение имен файлов):введение

• Символы генерации имен файлов интерпретируются shell`ом

• Shell будет генерировать имена файлов, удовлетворяющие заданному шаблону

• Генерация имен файлов осуществляется перед выполнением команды

• Команда будет оперировать со сгенерированными именами файлов

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

Символы генерации имен файлов

? Соответствует любому одному символу за исключением лидирующей точки

[ ] Определяет группу символов

- Определяет группу символов, принадлежащих заданному диапазону

! Отвергает заданную группу символов

* Соответствует произвольному числу символов, в том числе и нулевому, исключая лидирующую

точку

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

Генерация имен файлов и файлы с точкой

•Символы генерации имен файлов никогда не породят имя файла, начинающееся с точки

•В файлах, чьи имена начинаются с точки, она должна быть всегда указана явно

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

Генерация имен файлов:символ ?

? Соответствует любому одному символу за исключением лидирующей точки

Примеры

$ ls -a

…. .zz abc abcd abcdef abcz bbabb cyz zzayy

$ echo ??? Результат: abc cyz

$ echo abc? Результат: abcd abcz

$ echo ??a?? Результат: bbabb zzayy

$ echo .?? Результат: .zz

$ echo ? Результат: ?

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

Генерация имен файлов:символы [ ]

[ ] Определяет группу символов, из которой может подойти лишь один

Примеры

$ 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

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

Генерация имен файлов:символ *

* Соответствует произвольному числу символов, в том числе и нулевому, исключая лидирующую точку

Примеры

$ 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

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

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

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

Использование кавычек:введение

• Ряд символов имеет «специальный» смысл для shell`а:

- пробел

- возврат каретки

- $

- #

- *

- <>

• «Закавычивание» позволяет отменить особый смысл специальных символов.

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

Символы закавычивания

Обратный слэш \

Одиночные кавычки ‘

Двойные кавычки “

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

«Закавычивание»: символ \

\ Отменяет специальный смысл непосредственно следующего за ним символа

Пример:$ 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

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

«Закавычивание»: символ ‘

‘ Отменяет специальный смысл всех символов, заключенных между одиночными кавычками

Пример:$ 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

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

«Закавычивание»: символ “

“ Отменяет специальный смысл всех символов, заключенных между двойными кавычками, за исключением \, $, {имя

переменной}, $(команда) и “

Пример:$ 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 “they’re all here, \\, ‘, \” “

they’re all here, \, ‘, “

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

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

вывода

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

Перенаправление ввода и вывода :введение

Выполнениекоманд

Выполнениекоманд

Установки параметров

среды

Установки параметров

среды

Присвоениезначений

переменным

Присвоениезначений

переменным

Подстановка переменных

Подстановка переменных

Генерацияимен файловГенерация

имен файлов

Интерпретируемыйязык

программирования

Интерпретируемыйязык

программирования

Подстановкакоманд

Подстановкакоманд

КонвейерыКонвейеры

Перенаправлениеввода/вывода

Перенаправлениеввода/вывода

Shell

export переменнаяenv

переменная=значениеset

$переменная

переменная=$(команда)

* ? [ ]

cmd > filecmd2 > f.errcmd < file

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

Перенаправление ввода и вывода: введение

• Перенаправление вывода позволяет направить вывод команды в некоторый файл, отличный от терминала пользователя.

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

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

stdin, stdout, stderr

Файл Устройство Дескриптор файла

stdin Клавиатура 0

stdout Экран 1

stderr Экран 2

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

Перенаправление ввода: <

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

$ cat remind

Your mother’s birthday is November 29

$ mail user < remind

! Перенаправление ввода не изменяет содержимое файла ввода

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

Перенаправление вывода: > и >>

Любая команда, отправляющая результат на stdout, может перенаправить его в другой файлПример:Создание/Перезапись Создание/Добавление

$ date > date.out $ ls >> ls.out

$ date > who.log $ who >> who.log

$ cat > cat.out $ ls >> who.log

ввод текста

<Ctrl>+<d>

! Один и тот же файл не может быть одновременно открыт для перенаправления и ввода и вывода. Файлы ввода и вывода должны быть разными. В противном случае можно потерять исходное содержимое файла.

cat f1 f2 > f1 - здесь будет потеряно содержимое файла f1.

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

Перенаправление протокола: 2> и 2>>

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

$ cp 2> cp.err Создание/Перезапись

$ cp 2>> cp.err Создание/Добавление

$ more cp.err……

……

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

Что такое фильтр?

•Читает стандартный ввод и генерирует стандартный вывод.

•Осуществляет фильтрацию входного потока или файла.

•Посылает результаты на экран, не изменяя входной поток или файл.

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

Пример:

cat, grep,sort,wc

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

wc - подсчет количества строк

Синтаксис:

wc [-lwc ] [файл...] Подсчитывает число строк(-l), слов (-w) и символов (c) в файле

Примеры

$ wc file рассматривается как аргумент команды

115 567 3345 file

$ wc -l file

115 file

$ ls > ls.out подсчет количества файлов в каталоге

$ wc -w ls.out

72 ls.out

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

wc - подсчет количества строк

Примеры

$ wc <Return> подсчитывается количество строк, слов и

ab cde символов, вводимых со стандартного

dvbnvnsbvbnd ввода

dhjhjdhfkdhjf

<Ctrl><d>

3 4 30

$ wc < file стандартный файл заменяется на файл

105 715 2456 file, имя файла не выводится

$ wc -w file

715 file

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

sort - алфавитная и числовая сортировка

Синтаксис:

sort [-ndutX ] [-k номер_поля] [файл...] Сортирует строки

Примеры

$ sort file рассматривается как аргумент команды

$ tail -1 /etc/passwd

user3:xyzbkd:303:30:student user3:/home/user3:/usr/bin/sh

1 2 3 4 5 6 7

$ sort -nt: -k 3 < /etc/passwd

$ who > who1

$ sort who1 упорядочивание пользователей в системе по алфавиту

$ sort -u who1 упорядочивание с исключением повторяющихся строк

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

sort - опции сортировки

none лексикографическая (по кодам ASCII)

-d по принципу словаря (игнорируя любые символы, не являющиеся буквами, цифрами или пробелами)

-n числовая

-u уникальная (исключаются повторяющиеся строки)

-tX указание разделителя (X - символ-разделитель полей)

-kn выбор базового поля n для сортировки( по умолчанию n=1)

-r сортировка в обратном порядке

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

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

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

grep - опции

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

-i игнорировать регистр букв в модели

-n сопровождать выводимые строки номерами

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

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

grep - построение модели

В качестве модели можно задать некоторый текст. Такая модель называется регулярным выражением. Для их задания можно использовать некоторые специальные символы:

^ поиск совпадения в начале строки

$ поиск совпадения с конца строки

. соответствует любому одному символу

* предшествующая модель повторяется 0 или более раз

[] задается совокупность символов

[-] задается диапазон символов

[^] инвертирует процесс отбора

! Во избежание проблем при интерпретации shell’ом указанных специальных символов, лучше заключить регулярное выражение в кавычки.

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

Перенаправление ввода и вывода: обзор

cmd < файл Перенаправляет ввод команды cmd из файла

cmd > файл Перенаправляет вывод команды cmd в файла

cmd > > файл Перенаправляет вывод команды cmd и добавляет к файлу

cmd 2> файл_ошибок Перенаправляет протокод команды cmd в файл_ошибок

Фильтр Команда, которая читает со стандартного ввода и генерирует стандартный вывод.

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

sort Cортировка строк в алфавитном или числовом порядке.

grep Осуществляет поиск строк, содержащих модель.

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

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

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

Конвейеры :введение

Выполнениекоманд

Выполнениекоманд

Установки параметров

среды

Установки параметров

среды

Присвоениезначений

переменным

Присвоениезначений

переменным

Подстановка переменных

Подстановка переменных

Генерацияимен файловГенерация

имен файлов

Интерпретируемыйязык

программирования

Интерпретируемыйязык

программирования

Подстановкакоманд

Подстановкакоманд

КонвейерыКонвейеры

Перенаправлениеввода/вывода

Перенаправлениеввода/вывода

Shell

export переменнаяenv

переменная=значениеset

$переменная

переменная=$(команда)

* ? [ ]

cmd > filecmd2 > f.errcmd < file

cmd A | cmd B

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

Зачем используются конвейеры?

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

$ who > temp_file$ wc -l < temp_file$ rm temp_file

who ----> wc -l

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

Символ | (символ канала)

прием прием

stdin stdin

генерирует генерирует генерирует генерирует генерирует генерирует

stderr stdout stderr stdout stderr stdout

Пример:

$ ps -ef | more

$ ls | more

$ ls | sort -r |more

Примечание: cmd B должна быть фильтром

cmd A cmd B cmd C

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

Требования к командам в конвейере

•Любая команда, расположенная слева от символа | должна направлять свой вывод в стандартный вывод (stdout)

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

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

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

Перенаправление вывода или конвейеры?

Перенаправление ввода/вывода Конвейеры

Синтаксис:

cmd_out > file cmd_out | cmd_in

or

cmd_in < file

Пример:

who > who.out who | sort

sort < sort.out

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

Перенаправление в конвейере

3 потока для каждой команды: stdin, stdout, stderrМожно перенаправить потоки, которые не предназначены для конвейера

stdout stdin

cmd A cmd BДоступны для stdin stdoutперенаправления stderr stderr

stdout stdin stdout stdin

cmd A cmd B cmd CДоступны для stdin stderr stdoutперенаправления stderr stderr

Пример: $ grep user /etc/passwd | sort > sort.out

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

Требования к командам при перенаправлении в конвейере

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

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

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

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

Фильтры

cut выделяет указанные столбцы или поля и выводит

на stdout

tr преобразует символы

tee передает вывод в файл и на stdout

pr форматирует вывод и направляет на stdout

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

Команда cut (1)

Синтаксис:

cut -cсписок [файл...] Выделяет колонки или поля из файлов или стандартного ввода

cut -fсписок [-dсимвол] [-s] [файл...]

Опции:

-с выделение колонок

-f выделение полей

-dсимвол указание символа - разделителя полей

-s указание на пропуск любой строки, в которой нет разделителя

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

Команда cut (2)

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

Форматы для задания списка полей или колонок:

А-В Поля или колонки от А до В включительно

А- От поля или колонки А до конца строки

-В С начала строки до поля или колонки В

А, В Поля или колонки А и В

Допустимо использовать любую комбинацию форматов.

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

Команда cut (3)

Примеры:

$ date | cut -c1-3

Fri

$ tail -1 /etc/passwd

user3:mdhbmkdj:303:30:student user3:/home/user3:/usr/bin/sh

1 2 3 4 5 6 7

$ 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

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

Команда tr

Синтаксис:

tr [-s ] строка1 [строка2] Преобразует символы строки1на соответствующие им символы строки2

Опции:

-s строка1 Заменяет все символы строки1, встречающиеся несколько раз подряд на одиночное вхождение

Примеры

$ who | tr -s “ “ преобразование нескольких последовательно расположенных пробелов в один

$ date |cut -c1-3 | tr “[[:lower:]]” “[[:upper:]]”перевод символов строк из нижнего регистра в верхний

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

Команда tee (1)

Синтаксис:

tee [-a ] файл [файл...] Разветвляет конвейер, направляя вывод на стандартный вывод и одновременно в файл

Опции:

- a Команда tee добавляет вывод в конец файла, не перезаписывая его

Когда используется tee ?

•Для сбора данных промежуточного вывода в конвейере (tee ставится в середину конвейера).

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

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

Команда tee (2)

Примеры:

$ who | sort

$ who | tee unsorted | sort

$ who | tee unsorted | sort | tee sorted

$ who | wc -l

$ who | tee whoatsystem | wc -l

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

Команда pr (1)

Синтаксис:

pr [-опция] [файл...] Форматирует стандартный ввод и направляет его в стандартный вывод

Опции:-k Обеспечивает вывод k столбцов сверху вниз-a Обеспечивает вывод в несколько столбцов, используется совместно

с опцией - k, печать осуществляется построчно-t Удаляет заголовок и хвостовик на страницах-d Разделяет строки пустой строкой-wN Устанавливает длину строки в N символов-lN Устанавливает N строк на странице-nCK Задает нумерацию из K цифр, отделяемых от строки символом С (

по умолчанию С - знак табуляции <Tab>)-oN Смещает вывод на N столбцов от левого края страницы-p Устанавливает режим ожидания нажатия клавиши <Return> перед

каждой страницей-hстрока Следующая за этой опцией строка используется в

качестве заголовка

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

Команда pr (2)

Примеры:

$ pr -n3 file нумерует строки

$ pr -n3 file | more

$ ls | pr -3 вывод 3 столбцов

$ grep home /etc/passwd | pr -h “User accounts” добавление заголовка

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

Печать из конвейера

… | 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).

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

Конвейеры: обзор

Конвейер cmd_out | cmd_in

cmd_out | cmd_in_out | cmd_in

cut Выделяет указанные колонки или поля для стандартного вывода

tr Преобразует символы

tee Посылает свой вывод в файл и на стандартный вывод

pr Выводит на экран отформатированный вывод, обычно используется командой lp.

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

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

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

Команда ps

Синтаксис:

ps [-efl] Выводит информацию о состоянии процесса

Пример:$ ps

PID TTY TIME COMMAND

1324 ttyp2 0:00 sh

1387 ttyp2 0:00 ps

$ ps -ef

UID PID PPID C STIME TTY TIME COMMAND

root 0 0 0 Jun 1 ? 0:20 swapper

root 1 0 0 Jun 23 ? 0:00 init

root 2 0 0 Jun 23 ? 0:16 vhand

root 3 0 0 Jun23 ? 12:14 statdeamon

user3 1324 1 3 18:03:21 ttyp2 0:00 -sh

user3 1390 1324 22 18:30:23 ttyp2 0:00 ps-ef

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

Опции команды ps

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

-e Выдача списка всех процессов, развивающихся в системе

-f Получение полной информации о состоянии процессов

-l Получение информации о процессах в т.н. длинном формате

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

Фоновые процессы(1)

Синтаксис:

командная строка > cmd.out &

•Планирует командную строку как задание для фонового режима.

•Возвращает приглашение на ввод как только задание запущено.

•Перенаправляет вывод фонового процесса с тем, чтобы его вывод не смешивался с интерактивными командами.

•Выход из системы приведет к завершению процессов, выполняемых в фоновом режиме. Пользователь получит предупреждение в тот момент, когда попытается выйти из системы,следующего содержания: “There are running jobs”, и поэтому он снова должен ввести команду exit или нажать <Ctrl>+<d>.

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

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

Фоновые процессы(2)

Пример:$ grep user * > grep.out &[1] 194$ psPID TTY TIME COMMAND164 ttyp2 0:00 sh194 ttype2 0:00 grep195 ttyp2 0:00 ps•Shell сообщает номер задания и идентификатор процесса при переводе команды в фоновый режим в том случае, если указана опция monitor в команде set (set -o monitor).При указании этой опции по завершении фонового процесса будет выдано на экран соответствующее сообщение.•Команду, выполняемую в фоновом режиме,нельзя прервать нажатием <Ctrl>+<c>. Такого рода команды могут быть прекращены с помощью команды kill.

Весь ввод и вывод фонового процесса должен быть безусловно перенаправлен.

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

Запуск заданий в фоновом/оперативном режиме

jobs Выводит список выполняемых заданий

<Ctrl>+<z> Приостанавливает оперативный процесс (Символ

приостановки определяется во время входа в систему в

файле .profile с помощью команды stty susp ^z), выдает

приглашение shell’а

fg [%номер] Переводит задание с номером в оперативный режим

fg [%строка] Переводит любое задание, запущенное командной

строкой, начинающееся со строки в оперативный режим

bg [%номер] Переводит задание с номером в фоновый режим

bg [%строка] Переводит любое задание, запущенное командной

строкой, начинающееся со строки в фоновый режим

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

Команда nohup(1)

Синтаксис:

nohup команда & Делает команду защищенной от выхода пользователя из системы

Пример:$ nohup cat * > bigfile

[1] 972

$ <Ctrl>+<d> <Return>

login: user3

Password:

...

$ ps -ef | grep cat

UID PID PPID COMMAND

user3 972 1 … cat * > bigfile &

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

Команда nohup(2)

•Эта команда является прификсной, т.е. указывается перед запускамой

командой.

•Если команда запускается с префиксной командой nohup, пользователь

может выйти из системы, и при этом UNIX продолжит выполнение

фонового процесса даже несмотря на то, что родительский shell уже

завершен. При этом родителем команды становится процесс с номером 1

(init).

•Если файл вывода не указан, команда nohup сама обеспечит

перенаправление вывода в файл nohup.out. Причем в этот файл будет

записываться и стандартный вывод (stdout) и стандартный протокол (stderr)

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

Команда nice

Синтаксис:

nice [-N] командная_строка Запускает процесс на выполнение с пониженным приоритетом. N - число в диапазоне от 0 до 19.

Пример:$ nice -10 cc myprog.c -o myprog

$ nice -5 sort * > sort.out

•По умолчанию базовый приоритет равен 10. Большее значение числа соответствует меньшему приоритету.

•Приоритеты процессов можно определить с помощью команды ps -l. Они выводятся в столбце с заголовком PRI.Базовое значение приоритета выводится в столбце с заголовком NI.

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

Команда kill(1)

Синтаксис:kill [-s имя_сигнала ] PID [PID…] Посылает сигнал

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

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

Команда 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 выводит все имена сигналов, допустимых в соответствующей реализации системы.

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

Модуль 14Введение в

Shell-программирование

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

Shell-программирование: обзор

•Shell-процедура - это обычный файл, содержащий команды системы UNIX

•Доступ к файлу должен быть по меньшей мере разрешен на чтение и выполнение

•Для выполнения shell-процедуры следует ввести имя файла в ответ на приглашение shell.

•Данные могут быть переданы в shell-процедуру через:

– переменные среды

– аргументы командной строки

– использование ввода

•Обычно пользователи создают подкаталог bin в своем домашнем каталоге HOME для хранения собственных программ и включают переменную &HOME/bin в свою переменную PATH.

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

Пример shell-процедуры

$ cat myprog

#this is program myprog

date

ls -F

Выполнение процедуры myprog:

$ myprog

/usr/bin/sh

/usr/bin/sh

/usr/bin/date /usr/bin/lsPID=1324

PID=1350

myprog#datels -F PID=1361 PID=1362

$

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

Передача данных shell-процедуре(1)

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

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

Передача данных shell-процедуре(2)

Пример:$ cat color2echo The original value of the variable color is: $colorecho This program will set the value of color to ambercolor=amberecho The value of variable color is now $colorecho When your program concludes, display the value of the color variable.$ export color=lavender$ echo $colorlavender$ color2The original value of the variable color is: lavenderecho This program will set the value of color to amberThe value of variable color is now amberWhen your program concludes, display the value of the color variable.$ echo $colorlavender

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

Аргументы 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

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

Аргументы 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

$

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

Специальные переменные shell: # и *(1)

# Количество аргументов в командной строке

* Строка, содержащая все аргументы командной строки (за исключением $0)

Пример:$ cat color4echo There are $# command line argumentsecho They are $*echo The first command line argument is $1

$ chmod +x color4

$ color4 red green yellow blueThe are 4 command line argumentsThey are red green yellow blueThe first command line argument is red$

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

Специальные переменные shell: # и *(2)

Усовершенствованный пример программы инсталляции допускает в командной строке несколько аргументов:Пример:$ cat > my_install2echo $0 will install $# files to your bin directoryecho The files to be installed are: $*chmod +x $*mv $* $HOME/binecho Installation is complete

$ chmod +x my_install2

$ my_install2 color1 color2my_install2 will install 2 files to your bin directoryThe files to be installed are: color1 color2 Installation is complete

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

Специальные переменные 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

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

Команда shift(1)

•Сдвигает все строки, отмеченные символом *, влево на n позиций

•Уменьшает переменную # на n (по умолчанию n=1)

Синтаксис:

shift [n]

Команду shift полезно использовать для:

•доступа к позиционным параметрам в группах, например, совокупности координат x и y

•удаления опций из командной строки, предполагая, что они предшествуют аргументам

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

Команда 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

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

Команда 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

$

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

Команда read(1)

Синтаксис:read переменная [переменная...]Пример:$ cat color6#This program prompts for user inputecho “Please enter your favorite two colors -> \c”read color_a color_becho The colors you entered are: $color_b $color_a$ chmod +x color6$ color6Please enter your favorite two colors -> read blueThe colors you enterd are: blue red$ color6Please enter your favorite two colors -> read blue tanThe colors you entered are: blue tan red

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

Позиционные параметры и переменные

•Позиционные параметры задаются в командной строке при вызове

программы.

•Значения переменным присваиваются посредством команды read

при вводе данных, осуществляемом в процессе выполнения

процедуры.

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

Команда echo и управляющие символы

•Это специальные управляющие символы, интерпретируемые командой echo, которые обеспечивают управление строками.

•Эти символы интерпретируются командой echo, а не shell’ом.

Символ Действие при печати

\b Возврат на один симол

\c Подавление перехода на новую строку

\f Перевод страницы

\n Новая строка

\r Возврат каретки

\t Символ табуляции

\\ Обратный слэш

\nnn Символ, код ASCII которого nnn

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

Команда read(2)

Пример:$ cat > my_install3echo $0 will install files to your bin directoryecho “Enter the names of the files -> \c”read filenameschmod +x $filenamesmv $filenames $HOME/binecho Installation is complete

$ chmod +x my_install3

$ my_install3my_install3 will install files to your bin directoryEnter the names of the files -> f1 f2Installation is complete

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

shell-функции

Синтаксис:function имя_функции {shell_текст}

илиимя_функции (){shell_текст}

Пример:$ function install install()> { {> echo Install file:$1 echo Install file:$1> chmod +x $1 chmod +x $1> mv $1 $HOME/bin mv $1 $HOME/bin> echo Install complete echo Install complete> } }$ install myfileInstall file: myfileInstall complete

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

Дополнительные средства

•Комментирование текста shell-процедур с помощью знака #

•Cуществует альтернативный запуск shell-процедуры:

sh shell-процедура аргументы

shell-процедура должна быть доступна для чтения и может не быть исполняема

•“Отладчик” для shell-процедур:

sh -x shell-процедура аргументы

Каждая строка shell-процедуры выводится перед выполнением

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

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

ветвления

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

Коды завершения

Переменная shell’а ? содержит код завершения последней выполненной команды

0 команда выполнена без ошибки (true)

не 0 команда завершена в связи с ошибкой (false)

Пример:$ true$ echo $?0$ ls$ echo $?0$ echo $?0$ false$ echo $?1$cpUsage : cp f1 f2...$ echo $?1$ echo $?0

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

Команда test

Синтаксис:

test выражение или [ выражение ]

Команда test оценивает истинность выражения и формирует код завершения.

Значение выражения Код завершения

true 0

false не 0 (обычно 1)Команда test может оценивать истинность условия, в качестве аргументов которого могут быть:

•целые числа

•строки

•файлы

Команда test ничего не пишет в стандартный вывод.

При вызове команды test вторым способом после открывающей и перед закрывающей квадратными скобками должны быть пробелы.

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

Команда test:сравнение чиселСинтаксис : [ число отношение число ] Сравнивает числа в соответствии с

отношениемОтношения : -lt меньше-le меньше или равно-gt больше-ge больше или равно-eq равно-ne не равно

Пример:$ [ $X -lt 7 ]$ echo $?0$ [ $X -gt 7 ]$ echo $?1

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

Команда test:сравнение чисел

Пример:

$ [ $XX -eq 3 ] [ -eq 3 ]

sh: test: argument expected

$ [ “$XX” -eq 3 ] [ “ “ -eq 3 ] XX - NULL

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

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

Команда test:сравнение строк

Синтаксис :

[ строка1 = строка2 ] Определяется эквивалентность строк

[ строка1 != строка2 ] Определяется неэквивалентность строк

Пример:

$ X=abc

$ [ “$X” = “abc” ]

$ echo $?

0

$ [ “$X” != “abc” ]

$ echo $?

1

После открывающей и перед закрывающей квадратными скобками должны стоять пробелы.

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

Операторы сравнения строк

строка1=строка2 истина, если строки идентичны друг другу

строка1!=строка2 истина, если строки не идентичны друг другу

-z строка истина, если строка нулевой длины

-n строка истина, если строка ненулевой длины

строка истина, если строка ненулевой длины

Заключение переменной в кавычки застрахует от появления синтаксической ошибки

Пример:

$X=“Yes we will”

$[ $X = yes ] вызывает синтаксическую ошибку, интерпретируется shell’ом как [Yes we will = yes ]

$[ “$X” = yes ] правильный синтаксис, интерпретируется shell’ом как [“Yes we will” = yes ], и сравнение осуществляется корректным образом.

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

Особенности сравнения чисел и строк

Shell трактует все аргументы как числа в случае, если осуществляется сравнение чисел, и все аргументы как строки, если осуществляется сравнение строк.

Пример:$ X=03

$ Y=3

$ [ “$X” -eq “$Y” ] сравнивается число 03 с числом 3

$ echo $?

0 истина, т.к. аргументы равны друг другу, поскольку они числа

$ [ “$X” = “$Y” ] сравнивается строка «03» со строкой «3»

$ echo $?

1 ложь, т.к. аргументы не равны друг другу, поскольку они строки

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

Команда test: тестирование файлов

Синтаксис : test -опция имя_файла Оценивает характеристики имя_файла в

соответствии с опциейОпции:-f имя_файла истина, если файл существует и является обычным

файлом. т.е. не каталогом и не файлом устройства-s имя_файла истина, если файл существует и его размер больше 0-r имя_файла истина, если файл существует и доступен для чтения-w имя_файла истина, если файл существует и доступен для записи-x имя_файла истина, если файл существует и доступен для выполнения-d каталог истина, если файл существует и является именно

каталогом

Пример:$ test -f file или [ -f file ]$ echo $?0$ test -d file или [ -d file ]$ echo $?1

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

Команда test: другие операторы

Синтаксис : -o OR (ИЛИ)-a AND (И)! 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”

Между операторами, скобками и аргументами должны стоять пробелы.

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

Команды exit и return

Синтаксис :

exit [аргумент]•Завершает выполнение shell-программы и формирует код возврата.

•Если команда задана без аргументов, то код возврата устанавливается равным коду возврата последней команды, выполненной перед exit.

return [аргумент] •Останавливает выполнение функции и возвращает в вызвавшую процедуру аргумент, содержащий код завершения.

•Если аргумент не указан, то код зовершения соответствует последней команде, выполненной в функции перед выходом из нее.

•Когда прекращение выполнения функции обусловлено какими-то внешними по отношению к ней причинами, то это равносильно exit.

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

Команды exit и returnПример:$ cat exit_testecho exiting program nowexit 99

$ exit_testexiting program now

$echo $?99

$ cat rtn_testfunction rtn{echo return from functionreturn 99}

$ rtn_testreturn from function

$echo $?99

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

Конструкция if

Синтаксис: (соответствует передаче управления на одну ветвь)if

список_Аthen

список_Вfi

Последовательность выполнения конструкции if:1. Выполняются команды списка_А команд.

2. Если код завершения последней команды из списка_А равен 0 (ИСТИНА), то выполняются команды из списка_В команд и затем команды, следующие за fi.

3. Если код завершения последней команды из списка_А не равен 0 (ЛОЖЬ), то выполняются команды, следующие за fi.

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

Блок-схема конструкции if

ifсписок_А

thenсписок_В

fi

другие команды

код завершения =0

код завершения не равен 0

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

Конструкция if

Примеры:1.

iftest -s file

thenecho file exists

fiecho hello

2.if

grep kingkong /etc/passwdthen

echo found kingkongfi

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

Конструкция if

Примеры:3. Использование для управления переходом в случае возникновения ошибок при выполнении программы

if[ $# -ne 3 ]

thenecho Incorrect syntaxecho Usage: cmd arg1 arg2 arg3exit 99

fi

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

Конструкция if-else

Синтаксис: (соответствует передаче управления на одну из двух возможных ветвей)

ifсписок_А

thenсписок_В

elseсписок_C

fi

Последовательность выполнения конструкции if-else:1. Выполняются команды списка_А команд.

2. Если код завершения последней команды из списка_А равен 0 (ИСТИНА), то выполняются команды из списка_В команд и затем команды, следующие за fi.

3. Если код завершения последней команды из списка_А не равен 0 (ЛОЖЬ), то выполняются команды из списка_С команд и затем команды, следующие за fi.

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

Блок-схема конструкции if-else

ifсписок_А

thenсписок_В

fi

другие команды

код завершения =0

код завершения не равен 0

elseсписок_C

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

Конструкция if-else

Пример:if

[ $X -lt 10 ]then

echo X is less then 10else

echo X is not less then 10fi

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

Конструкция caseСинтаксис: (соответствует передаче управления на одну из

множества возможных ветвей)case слово inобразец1) список_А

;; образец2) список_В

;;образецN) список_N

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

символами обеспечивает сравнение с любым, попадающим в этот интервал

| логический оператор OR («ИЛИ»)

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

Конструкция case

словообразец 1

словообразец 2

словообразец N

esac

другие команды

список_А

список_В

список_N

совпадение

совпадение

совпадение

несовпадение

несовпадение

несовпадение

... ...

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

Конструкция case

Пример:case $ANS in

yes) echo O.K.;;

no) echo no go;;

esac

case $OPT in1) echo option 1 ;;2) echo option 2 ;;3) echo option 3 ;;*) echo no option ;;esac

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

Конструкция case: примеры задания образцов

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

Пример:$ cat menu_with-caseecho COMMAND MENUecho d to display time and date echo w to display logged-in usersecho l to list contents of current directoryecho Please enter your choice:read choicecase $choice in

[dD]*) date ;;[wW]*) who ;;l*|L*) ls ;;*) echo Invalid selection ;;

esac$

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

Shell-программирование: ветвления. Заключение.

Код завершения Возвращает числовое значение после

выполнения каждой программы - echo $?

Сравнение чисел [ $число1 -lt $число2 ]

Сравнение строк [ $строка1 = $строка2 ]

Тестирование файлов test -f имя_файла

exit n Завершает программу и формирует код

завершения

if, if-else Передача управления осуществляется на основе

анализа кода завершения последней команды

списка_А

case Слово сравнивается с каждым образцом по

принципу сравнения строк

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

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

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

Введение в циклы

Назначение : Повторное выполнение совокупности команд

Управление: Основано на анализе кода завершения ключевой

команды

Три вида: while...do...done

until... do... done

for... do... done

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

Оценивание значений арифметических выражений с помощью let(1)

Синтаксис:

let выражение или ((выражение))•let дает возможность использовать в shell-программах арифметические выражения•работает в формате длинного целого•при построении арифметических выражений можно использовать операторы (даны в прорядке убывания приоритета выполнения): Оператор Описание- Одноместный минус (операция изменения знака

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

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

Оценивание значений арифметических выражений с помощью let(2)

Пример:

$ x=10 $ x=12

$ y=2 $ let “x < 10”

$ let x=x+2 $ echo $?

$echo $x 1

12 $ (( x > 10 ))

$ let “x=x / (y+1) “ $ echo $?

$ echo $x 0

4 $if (( x > 10 ))

$ (( x=x+1 )) > then echo x greater

$ echo $x > else echo x not greater

5 fi

x greater

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

Конструкция while(1)

Повторение выполнения когда условие истинно.

Синтаксис:while

список_Аdo

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

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

Конструкция while(2)

код завершения не 0 false

код завершения 0

true

whileсписок_А

do

список_В

done

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

Конструкция while(3)

Пример:$ cat test_whileX=1while (( X <= 10 ))do

echo hello X is $X; let X=X+1done

$ test_whilehello X is 1hello X is 2

.

.

.hello X is 10• Позаботьтесь о том, чтобы циклы while не оказались бесконечными. В таких циклах управляющая команда всегда возвращает код завершения true.

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

Конструкция 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

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

Конструкция 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

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

Конструкция until(1)

Повторение выполнения тела цикла до тех пор, пока условие истинно.

Синтаксис:until

список_Аdo

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

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

Конструкция until(2)

код завершения 0 true

код завершения не 0

false

untilсписок_А

do

список_В

done

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

Конструкция until(3)

Пример:$ cat test_untilX=1until (( X > 10 ))do

echo hello X is $X; let X=X+1done

$ test_untilhello X is 1hello X is 2

.

.

.hello X is 10• Позаботьтесь о том, чтобы циклы until не оказались бесконечными. В таких циклах управляющая команда всегда возвращает код завершения false.

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

Конструкция 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

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

Конструкция 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

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

Конструкция for(1)

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

Синтаксис:for переменная in списокdo

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

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

Конструкция for(2)

список исчерпан

forпеременная in список

присвоение переменнойзначения следующего

элемента списка

do

список_А

done

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

Конструкция for(3)

Пример:$ cat test_forfor X in 1 2 3 4 5do

echo “2 * $X is \c”let X=X*2echo $X

done

$ test_for2 *1 is 22 *2 is 42 *3 is 62 *4 is 82 *5 is 10

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

Конструкция 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

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

Конструкция for(5)

Пример:

$ cat example_B

for FILE in $*

do

if

test -d $FILE

then

ls -F $FILE

fi

done

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

Конструкция for(6)

Если требуется использовать один и тот же список несколько раз, то его можно сохранмить в файле. Затем, используя команду cat , можно сгенерировать список для своего цикла for способом, использованным в примере:$ cat studentsuser1user2user3user4

$ cat for_students_file_copyfor NAME in $(cat students)do

cp test.file /home/$NAMEchown $NAME /home/$NAME/test.filechmod g-w,o-w /home/$NAME/test.fileecho done $NAME

done

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

Использование в списке цикла аргументов командной строки

Можно создать список цикла из аргументов командной строки следующим образом:

for i in $*

do

cp $i $HOME/backups

done

или

for i

do

cp $i $HOME/backups

done

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

Конструкции break, continue, exit

break [n] Прекращает текущее выполнение цикла и передает управление первой (или с номером n) команде после done.

continue [n] Останавливает выполнение текущей итерации цикла и передает управление на начало очередной (или с номером n) итерации вложенного цикла.

exit [n] Останавливает выполнение shell-программы и формирует код завершения n.

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

Команды break и continue: примеры

whiletrue

doecho “Enter file to remove:\c”read FILEif test ! -f $FILEthen

echo $FILE is not a regular filecontinue

fiecho removing $FILErm $FILEbreak

done

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

Shell-программирование: циклы. Заключение.

let выражение Оценивает значение арифметического выражения

((выражение))

while условие is истина do ... done цикл while

until условие is истина do ... done цикл until

for переменная in список do ... done цикл for

break [n] прерывание цикла

continue [n]прекращение выполнения текущей итерации цикла

exit [n] прекращение выполнения shell-программы

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

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

сигналы и прерывания

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

Что такое сигнал?

Сигнал - некоторая переменная, передаваемая процессу, когда наступает определенное событие

Сигнал Событие

EXIT Выход из shell’а

HUP Зависание - посылается фоновому процессу при выходе из системы

INT <Ctrl>+<c> - прерывание

QUIT <Ctrl>+<\> - прекращение работы (генерирует файл ядра)

KILL Уничтожение процесса

TERM Прекращение работы программы

Команда kill передает сигнал, заданный в явном виде, процессу

kill [-s сигнал] идентификатор_процесса (PID)

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

Что такое прерывание?

Прерывание - способ захватывания сигналов, которые могут быть

посланы процессам, и выполнения в соответствии с видам сигнала

некоторого действия.

Программы обработки прерываний (обработчики прерываний) -

действия в ответ на прерывания.

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

Команда trap

Синтаксис :

trap ‘команды’ сигнал [ сигнал... ] выполняются команды по получении сигнала

• Команда trap может быть использована в shell-программах с целью перехвата сигнала до того, как он удалит(уничтожит) процесс и выполнения некоторого дополнительного или альтернативного действия.

• Команду trap следует применить для указания в явном виде сигналов и связанных с ними соответствующх действий, которые должны быть выполнены.

• Команды могут представлять собой список команд системы UNIX, отделяемых ;. Можно бакже создать shell-программу, которая выполнит требуемые действия и указать имя этой программы в качестве аргумента.

• Обычно команды trap помещаются в начале shell-программы. Сигналы о прерывании определются shell’ом , когда он читает команду trap. Прерывания активизируются по получении соответствующего сигнала.

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

Команда trap

Пример:

$ cat > mytrap

trap ‘echo bye; exit’ INT QUIT TERM

while true

do

echo hello

done

$ mytrap

hello

hello

hello

bye -------------------------------------- нажать <Ctrl>+<c>

$

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

Команда trap

Виды действий с сигналами прерываний : • Перехват сигнала. Вместо прекращения выполнения процесса будут выполнены указанные специальные команды.

• Игнорирование сигнала. Используется если shell-программа работает с важными файлами и важно сохранить их содержимое, несмотря на прерывание.

• Сбрасывание сигналов прерывания. После захвата или игнорирования команда trap умолчанию.Обычно такое действие связано с завершением процесса. Это не вызовет сброса прерываний по отношению к действиям, которые были заданы раньше, чем задано игнорирование прерываеий.

Сигнал NULL посылается процессом при нормальном завершении. Он используется для того, чтобы задать действие, которое должна выполнить shell-программа после нормального завершения процесса.

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

Игнорирование сигналов прерыванияСинтаксис :

trap ‘ ’ сигнал [ сигнал... ]

Пример:$ cat > mytrap2trap ‘ ’ INT while truedo

echo hellodone

$ mytrap2hellohello-------------------------------------- нажать <Ctrl>+<c> (проигнорирован)hellohello -------------------------------------- нажать <Ctrl>+<\> (проигнорирован)$

Сигнал KILL не может быть проигнорирован!

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

Размещение команды trap в программе

Помещайте команду в начале программы для управления удалением временных файлов, если выполнение программы прекращается:

trap ‘rm /tmp/tempfile;exit’ INT QUIT TERM

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

trap ‘ ‘ INT QUIT TERM

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

trap INT QUIT TERM

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

Сигналы и прерывания: заключения

Сигнал Логическая переменная, посылаемая shell-программе по наступлении определенного события

Выход из EXIT - сигнал выходасистемы<Ctrl>+<c> INT - сигнал прерывания

<Ctrl>+<\> QUIT - прекращение работы

kill -s сигнал идент_процесса Передача сигнала процессу с номером идент_процесса

kill идент_процесса Передача сигнала TERM процессу с номером идент_процесса

kill -s KILL идент_процесса Передача сигнала безусловного уничтожения процессу с номером идент_процесса

trap ‘команды’ сигнал Перехват сигнала и запуск команды

stty -a Просмотр сигналов

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

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

памяти

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

Запись файлов на ленту

•Для записи файлов на ленту вы должны знать имя приборного

файла Вашего накопителя на магнитной ленте

•Типичные имена:

/dev/rmt/0m 9-ти дорожечная лента или DDS лента

/dev/rmt/c0t3d0BEST

•Выясните у системного администратора, через какой приборный

файл осуществляется доступ к накопителю на магнитной ленте.

•Следующие команды позволяют создавать резервные копии:

tar

cpio

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

Команда tar

Синтаксис : tar –ключ [f имя_файла ] [файл … ] ведение архива

Ключи:с Создается новый архив

x Файлы считываются из архива

t Рассматривается таблица содержимого архива

r Файлы записываются в конец архива

u Файлы записываются в архив, если они созданы заново или их содержимое подверглось изменению

Опции:v Вывод на экран имен файлов при их архивировании или восстановлении по ним содержимого утерянных файлов

f файл Указывает файл, куда будет записываться архив.

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

Команда 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

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

Команда tar

Примеры :

Создание резервной копии

$ (cd directory_name; tar –cvf - *) | (cd target; tar –xvf -)

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

Команда 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

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

Опции команды cpio

-o -i Назначение опции

-c -c Пишется заголовок в ASCII формате

- -d Пересоздается в нужном виде структура каталога

- -m Остается текущая дата, соответствующая времени внесения изменений (важно для осуществления контроля за хранящимися версиями файлов

- -t Вывод таблицы, описывающей содержимое архива

- -u Безусловное восстановление (если файл уже существует, то указание этой опции приводит к перезаписи его содержимого)

-v -v Выводится список скопированных файлов

-x -x Обрабатываются специальные (приборные файлы)

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

Команда cpio

Примеры:

Чтение таблицы содержимого архива:

$ cpio –ict < /dev/rmt/0m

Восстановление одного файла:

$ cpio –icudm "filename" < /dev/rmt/0m

Восстановление всех файлов, чьи имена удовлетворяют заданному образцу:

$ cpio –icudm "*filename*" < /dev/rmt/0m

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

Использование команды find при резервном копировании

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

Синтаксис:find список_маршрутных имен [выражение]

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

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

возможностей

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

Что такое локальная сеть?

•Пример топологии локальной сети с общей шиной.

HP Series 300/400System ARPA

BerkeleyNS

HP Series 800System ARPA

BerkeleyNS

PC HP Vectra

ARPA

Non-HPNon-UNIX

SystemARPA

HP Series 700 ARPA

Berkeley

Non-HP UNIXSystemARPA

Berkeley

HP 3000 System ARPA

NS

HP 3000 System ARPA

NS

Терминатор

Терминатор

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

Сервисы локальной сети (LAN)

• Две группы сервисов локальной сети:

- ARPA сервисы (telnet, ftp)

- Berkeley сервисы (rcp, rlogin, remsh)

• Сервисы позволяют:

- Входить в систему на удаленной машине

- Передавать файлы между узлами сети

- Осуществлять удаленный доступ к файлам

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

Команда hostname

Синтаксис:hostname Сообщает имя Вашего компьютера в сети

Примеры : $ hostname

fred

$

$ more /etc/hosts

192.1.2.1 fred

192.1.2.2 barney

192.1.2.3 wilma

192.1.2.1 betty

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

пользователем на удаленной машине

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

Команда telnet

Синтаксис:telnet имя_компьютера ARPA сервис для удаленного входа в

другой компьютер• Все виды выполняемых вами работ будут реализовываться на удаленной машине.• Ваш компьютер будет только обеспечивать прием и передачу информации на терминал через локальную сеть.•Для прекращения сеанса связи выйдите с удаленной машины, используя <ctrl>+<d>, <Return> или exit.

Примеры : $ telnet fredTrying …Connected to fredEscape character is '^]".

HP-UX fred 10.0 9000/715login:

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

Команда ftp (протокол передачи данных)

Синтаксис:ftp имя_компьютера ARPA сервис по передаче файлов на

удаленную машину и получение их от него.

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

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

Команда ftp. Примеры.$ ftp fredConnected to fred.220 fred FTP server [Version 1.7.109.2.Tue Jul 28 23:46:52 GMT 1992)ready

Name (fred:gerry): <Return> Password (fred:gerry) : Enter vour password and press <Return> 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.3967 bytes sent in 0.19 seconds (20.57 Kbytes/sec)

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

Команда 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 14 1993 exercises

-rw-rw-rw- 1 root sys 35 Осt 23 1993 cronfile

-rw-rw-rw- l root sys 41 Jul 5 1993 fio

-rw-rw-rw- 1 root sys 153 Осt 23 1593 initlaserjet

226 Transfer complete.

ftp> quit

221 Coodbye.

$

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

Команда rlogin

Синтаксис:rlogin имя_компьютера Berkeley сервис по удаленному

входу в другой компьютер•rlogin пытается загрузить вас, используя локальной пользовательское имя.•Если системный администратор сконфигурировал файл/etc/hosts.equiv, то пароль запрашиваться не будет•Если в Вашем домашнем каталоге создан файл .rhosts, то вход в удаленный компьютер также можно вести без ввода пароля (информация о формате файла .rhosts находится в hosts.equiv(4)) .

Пример:$ hostnamebarney$ rlogin fredPassword:$ hostnamefred$ exit$ hostnamebarney

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

Команда rcp

Синтаксис:rcp имя_пути_файла_источника имя_пути_файла_преемника Berkeley сервис, обеспечивающий передачу файла на или с удаленном машины. Работает подобно команде cp.•Имена удаленных файлов указываются в виде имя_компьютера:имя_пути•Если осуществляется копирование в или из локального файла, можно отбросить задание имени компьютера в сети и двоеточие

Пример:$ rcp funfile fred:/tmp/funfile передача файла с локальной машины $ rcp fred:/tmp/funfile barney:/tmp

Для работы команды rcp должен быть правильно сконфигурирован файл /etc/hosts.equiv или .rhosts.

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

Команда remsh

Синтаксис:remsh имя_компьютера команда Berkeley сервис по запуску на выполнение команды на

удаленной машине

Пример:$ hostnamebarney$ remsh fred ls /tmpbackuplistcroutfred.logupdate.log$ remsh fred ps –ef…$ remsh fred cat /etc/hosts | more$ cat myfile | remsh fred lp печать файла на принтере,

подключенном к другому компьютеруДля работы команды rcp должен быть правильно сконфигурирован файл /etc/hosts.equiv или .rhosts.

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

Команда rwho (Berkeley)

Синтаксис:

rwho обеспечивает вывод, подобный команде who;

выводит на экран имена пользователей в сети,

выполняющих со своих машин команду rwho

Пример:$ rwho

user1 barney:tty0p1 Jul 18 8:23

user2 wilma:tty0p1 Jul 18 9:44

user3 fred:tty0p1 Jul 18 8:56

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

Команда ruptime (Berkeley)

Синтаксис:

ruptime выводит на экран данные о состоянии каждой машины в

локальной сети;

каждая машина должна быть опрошена посредством

команды rwho

Пример:$ ruptime

barney up 3:10 1 users load 1.32, 0.80, 0.30

fred up 1+5:15 4 users load 1.47, 1.16, 0.30

wilma down 0:00