Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

os_bash

.pdf
Скачиваний:
8
Добавлен:
13.02.2015
Размер:
230.16 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Федеральное государственное образовательное учреждение высшего профессионального образования

ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ

Брагилевский В. Н., Дубров Д. В.

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

Введение в командную оболочку bash и инструменты командной строки POSIX

Ростов-на-Дону 2012

Методические указания разработаны старшим преподавателем кафедры информатики и вычислительного эксперимента В. Н. Брагилевским и кандидатом физико-математических наук, старшим преподавателем кафедры информатики и вычислительного эксперимента Д. В. Дубровым.

Печатается в соответствии с решением кафедры информатики и вычислительного эксперимента ЮФУ, протокол № 2 от

СОДЕРЖАНИЕ

1 Введение

 

5

1.1

Определения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.2

Разрешения ФС . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

 

1.2.1 Классы пользователей . . . . . . . . . . . . . . . . . . . . . .

5

 

1.2.2

Права классов пользователей . . . . . . . . . . . . . . . . . .

5

 

1.2.3

Атрибуты файлов . . . . . . . . . . . . . . . . . . . . . . . .

6

2 Запуск команд в bash, команды GNU

7

2.1 Форматы команд . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2.1.1

Специальные символы оболочки . . . . . . . . . . . . . . . .

7

2.1.2

Запуск команды . . . . . . . . . . . . . . . . . . . . . . . . .

7

2.1.3

wc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.1.4

ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.1.5kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.6man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.7echo (или команда оболочки) . . . . . . . . . . . . . . . . . . 11

2.2Переменные окружения . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1Команда оболочки export . . . . . . . . . . . . . . . . . . . . 12

2.2.2 Переменные окружения оболочки bash . . . . . . . . . . . .

12

2.3 Другие команды . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

2.3.1pwd (или команда оболочки) . . . . . . . . . . . . . . . . . . . 13

2.3.2

cd (или команда оболочки) . . . . . . . . . . . . . . . . . . .

13

2.3.3

ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

2.3.4

chmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

3

2.3.5

mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.3.6

rm, rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.3.7

mv, cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.3.8touch, cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3.9more, less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3.10head, tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3.11find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.3.12 grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

3 Управляющие конструкции bash

20

3.1 Параметры сценариев . . . . . . . . . . . . . . . . . . . . . . . . . .

20

3.2Специальные символы . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3 Расширения (shell expansion) . . . . . . . . . . . . . . . . . . . . . .

21

3.3.1 Фигурных скобок . . . . . . . . . . . . . . . . . . . . . . . .

21

3.3.2Тильды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.3.3Переменной или параметра . . . . . . . . . . . . . . . . . . . 22

3.3.4 Команды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.3.5Арифметического выражения . . . . . . . . . . . . . . . . . . 23

3.3.6Процесса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.3.7Имён файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.4Алгоритмические конструкции . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Условный оператор . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2Оператор выбора . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.4.3

Оператор цикла по списку . . . . . . . . . . . . . . . . . . .

32

3.4.4

Оператор цикла с предусловием продолжения . . . . . . . .

32

3.4.5

Оператор цикла с предусловием прекращения . . . . . . . .

34

3.4.6Операторы (встроенные команды) выхода из цикла и итерации 34

4

1ВВЕДЕНИЕ

1.1Определения

1.2Разрешения ФС

Традиционные расширения UNIX: основаны на стандарте POSIX:

1.2.1Классы пользователей

Владелец: (owner) — владелец файла.

Группа: (group) — набор пользователей (владелец не обязательно принадлежит группе).

Остальные: (others) — остальные пользователи, 6= владельцу и не принадлежит

группе.

1.2.2Права классов пользователей

Таблица 1: влияние разрешений на допустимые операции с файлами и каталогами

Право

Файл

Каталог

 

 

 

Чтение

Чтение

Чтение имён файлов

Запись

Изменение содержимого

Переименование файлов, создание но-

 

 

вых, удаление существующих (если

 

 

нет права на исполнение, то право иг-

 

 

норируется).

Исполнение

Запуск исполняемого файла или файла

Возможность выбора каталога в ка-

 

сценария

честве текущего и получения доступа

 

 

к файлам внутри.

 

 

 

5

Предупреждение: разрешения для файлов/подкаталогов внутри каталогов

не наследуются от родительских каталогов.

1.2.3 Атрибуты файлов

 

d

 

rwx

 

rwx

 

 

rwx

 

Таблица 3: обозначения типов фвйлов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тип

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

владелец

 

 

 

 

 

 

 

Тип

Значение

 

 

 

 

 

 

 

 

 

 

 

 

 

группа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

другие

d

каталог

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l

символьная ссылка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

блочное устройство

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

символьное устройство

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

именованный канал

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

сокет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИМЕРЫ

Пусть дан каталог с атрибутами:

Таблица 3: примеры разрешений для каталогов

Атрибуты Права

drwx------

dr-x------

d-wx------

d--x------

можно всё.

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

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

6

2ЗАПУСК КОМАНД В BASH, КОМАНДЫ GNU

2.1Форматы команд

2.1.1Специальные символы оболочки

Таблица 5: специальные символы оболочки bash

Символ Значение

(пробел) разделитель командной строки

/разделитель имён каталогов в полном имени

\экранирование специального значения символов

&выполнение команды в фоне

<, > перенаправление ввода/вывода

?любой символ в шаблоне

$подстановка значения переменной

[, ] определение диапазона символов

|операция конвейера

2.1.2Запуск команды

Синтаксис:

hимяi [hключиi] [hаргументыi]

7

Таблица 7: синтаксис запуска команд

Синтаксис

Значение

 

 

hкомандаi &

запуск в фоне

hкомандаi < hфайлi

перенаправление ввода

hкомандаi > hфайлi

перенаправление вывода с перезаписью

hкомандаi >> hфайлi

перенаправление вывода с дозаписью

hкомандаi | hкомандаi

связывание в конвейер

hкомандаi; hкомандаi

последовательный запуск

hкомандаi && hкомандаi

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

hкомандаi || hкомандаi

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

(hкомандыi)

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

ПРИМЕР (ЗАПУСК КОМАНД)

stu003@ubuntu:~$ mail stu003 < letter.txt stu003@ubuntu:~$ find * /etc 1> /dev/null find: ‘/etc/chatscripts’: Permission denied find: ‘/etc/ppp/peers’: Permission denied find: ‘/etc/ssl/private’: Permission denied find: ‘/etc/cups/ssl’: Permission denied stu003@ubuntu:~$ ps -el | wc -l

143

stu003@ubuntu:~$ DATE=‘date‘ stu003@ubuntu:~$ echo $DATE Tue. Oct. 25 02:43:11 MSK 2011

8

2.1.3wc

Команда wc предназначена для печати количества строк, слов или байт в каж-

дом входном файле. Синтаксис:

wc [-hключиi] [hфайлi ...]

Таблица 9: ключи команды wc.

Ключ Значение

-l количество строк

-c количество байт

-m количество символов

-w количество слов

-L длина самого длинного слова

2.1.4ps

Команда ps предназначена для вывода информации об активных процессах.

ps [-hключиi]

Таблица 11: ключи команды ps

Ключ Значение

-A (или -e) вывод информации обо всех процессах системы (иначе только процессов теку-

 

щего пользователя и на текущем терминале)

-l

вывод дополнительной информации о процессах

-F

вывод расширенной информации о процессах

 

 

9

2.1.5kill

Команда kill посылает сигнал процессу с заданным идентификатором. Син-

таксис:

kill [-hномер или имя сингалаi] hидентификатор процессаi

Сигнал: средство межпроцессного взаимодействия в POSIX-совместимой операционной системе. Представляет асинхронное сообщение процессу или потоку, прерывая его на неатомарной операции. Вызывается обработчик сигнала — ранее зарегистрированный процессом или определённый системой по умолчанию.

Таблица 13: некоторые виды сигналов

Имя

Номер

Комбинация

Значение

 

 

 

 

SIGKILL

9

немедленное завершение (процесс не может установить

 

 

 

собственный обработчик для данного сигнала)

SIGINT

2

Ctrl + C

прерывание

SIGTSTP

20

Ctrl + Z

останов с терминала

SIGSEGV

11

нарушение сегментации (ошибка работы с памятью)

SIGFPE

8

неправильная арифметическая операция (деление на 0,

 

 

 

и т. д.)

SIGPIPE

13

запись в канал, из которого никто не читает

 

 

 

 

ПРИМЕР

stu003@ubuntu:~$ ps

PID

TTY

TIME

CMD

3742

pts/0

00:00:01

bash

10