Командная оболочка Bash - efanov/mephi GitHub Wiki
- Назначение и возможности командной оболочки Bash (макропроцессор, интерпретатор, язык программирования). Стандарт IEEE Standard 1003.1. Интерактивный и не интерактивный режимы работы. Синхронное и асинхронное выполнение команд. Встроенные и внешние команды. Средства управления потоком, переменные, функции.
- Определения: blank (пробел или tab), слово (последовательность символов, не может содержать неэкранированных метасимволов), имя (слово из букв, цифр и _, и начинающееся на букву или _), метасимвол (символ для разделения слов: пробел, tab, ‘|’, ‘&’, ‘;’, ‘(’, ‘)’, ‘<’, ‘>’), оператор (‘||’, ‘&&’, ‘&’, ‘;’, ‘;;’, ‘;&’, ‘;;&’, ‘|’, ‘|&’, ‘(’, ‘)’).
- Зарезервированные слова.
- Экранирование (quoting). Существует 3 вида экранирования:
- Обратная косая черта
\
(the escape character) - Одинарные кавычки
'
- Двойные кавычки
"
(за исключением$
,`
,\
)
- Обратная косая черта
- Управляющие последовательности ANSI.
- Комментарии.
- Интерпретация командной строки: чтение (из файла, из строки - опция -c, из стандартного ввода), разбиение на слова и операторы, экранирование, разбиение на команды, подстановки, разбиение на команды, аргументы и список файлов, перенаправления, выполнение, ожидание завершения и сохранение возвращаемого значения (exit status).
Существует 5 видов команд:
- Простые команды
- Конвейеры (pipelines) - последовательность команд, разделенных операторами ‘|’ или ‘|&’.
- Списки (lists) - последовательность конвейеров команд, разделенных операторами ‘;’, ‘&’, ‘&&’, или ‘||’, и заканчивающаяся ‘;’, ‘&’, или newline.
- Программные конструкции (compound commands) - команды управления потоком выполнения
- (coprocesses) - двустороннее взаимодействие между командами
Формат простой команды:
имя_команды [аргументы] **оператор**
Возвращаемое значение - число (0-255), 128+n (завершение по сигналу n).
- Организация циклов (looping constructs): until, while, for.
- Организация ветвлений (conditional constructs): if, case, select, (()), [[]].
- Группировка команд (command grouping): (), {}.
Параметр (parameter) хранит значения.
- Позиционные параметры (positional parameter) обозначаются цифрами (кроме 0) и устанавливаются из shell-аргументов (команда set). Позиционный параметр n доступен как ${n}.
- Специальные параметры (special parameter).
- Переменная (variable) - это параметр, у которого есть имя. Переменная имеет значение и атрибуты (команда declare). Форма name=[value].
read passwd
if [ ${#passwd} -lt 8 ]
then
printf "Password is too short: %d characters\n" "$#" >&2
exit 1
fi
$ passwd=zx12.,=+
$ printf "%s\n" "${passwd//?/*}"
********
Существует 8 видов подстановок:
- brace expansion
- tilde expansion
- Параметров и переменных (parameter and variable expansion). Базовая форма ${parameter}.
- Команд (command substitution)
- arithmetic expansion
- process substitution
- word splitting ($IFS)
- генерация имен файлов (filename expansion) (*,?,[], [ [:class:] ])
Символ $ используется для реализации подстановок видов: параметров, команд и арифметических.
-
Перенаправление ввода-вывода (redirections).
-
Команды вычисления выражений и анализа строк символов. Результаты арифметических и логических операций. Экспортирование переменных. Механизм выработки и проверки условий в shell-процедурах. Команда проверки истинности отношений при проверке файлов, числовых значений и анализе символьных строк. Синтаксис команды.
-
Программирование в Bash. Понятие shell-процедуры. Создание. Исполнение. Передача и обработка параметров.
-
Понятие среды пользователя и средства её настройки.
- Команды:
bash
,env
,history
,clear
,echo
,exit
. - Файлы и каталоги:
/usr/share/doc
.