os_bash
.pdfФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Федеральное государственное образовательное учреждение высшего профессионального образования
ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
Брагилевский В. Н., Дубров Д. В.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Введение в командную оболочку 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