Командная оболочка Bash - efanov/mephi GitHub Wiki

  • Назначение и возможности командной оболочки Bash (макропроцессор, интерпретатор, язык программирования). Стандарт IEEE Standard 1003.1. Интерактивный и не интерактивный режимы работы. Синхронное и асинхронное выполнение команд. Встроенные и внешние команды. Средства управления потоком, переменные, функции.
  • Определения: blank (пробел или tab), слово (последовательность символов, не может содержать неэкранированных метасимволов), имя (слово из букв, цифр и _, и начинающееся на букву или _), метасимвол (символ для разделения слов: пробел, tab, ‘|’, ‘&’, ‘;’, ‘(’, ‘)’, ‘<’, ‘>’), оператор (‘||’, ‘&&’, ‘&’, ‘;’, ‘;;’, ‘;&’, ‘;;&’, ‘|’, ‘|&’, ‘(’, ‘)’).
  • Зарезервированные слова.
  • Экранирование (quoting). Существует 3 вида экранирования:
    • Обратная косая черта \ (the escape character)
    • Одинарные кавычки '
    • Двойные кавычки " (за исключением $, `, \)
  • Управляющие последовательности ANSI.
  • Комментарии.
  • Интерпретация командной строки: чтение (из файла, из строки - опция -c, из стандартного ввода), разбиение на слова и операторы, экранирование, разбиение на команды, подстановки, разбиение на команды, аргументы и список файлов, перенаправления, выполнение, ожидание завершения и сохранение возвращаемого значения (exit status).

Виды команд

Существует 5 видов команд:

  1. Простые команды
  2. Конвейеры (pipelines) - последовательность команд, разделенных операторами ‘|’ или ‘|&’.
  3. Списки (lists) - последовательность конвейеров команд, разделенных операторами ‘;’, ‘&’, ‘&&’, или ‘||’, и заканчивающаяся ‘;’, ‘&’, или newline.
  4. Программные конструкции (compound commands) - команды управления потоком выполнения
  5. (coprocesses) - двустороннее взаимодействие между командами

Формат простой команды:

имя_команды [аргументы] **оператор**

Возвращаемое значение - число (0-255), 128+n (завершение по сигналу n).

Функции

Виды программных конструкций:

Параметры и переменные

Параметр (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//?/*}"
********

Подстановки (shell expansions)

Существует 8 видов подстановок:

  1. brace expansion
  2. tilde expansion
  3. Параметров и переменных (parameter and variable expansion). Базовая форма ${parameter}.
  4. Команд (command substitution)
  5. arithmetic expansion
  6. process substitution
  7. word splitting ($IFS)
  8. генерация имен файлов (filename expansion) (*,?,[], [ [:class:] ])

Символ $ используется для реализации подстановок видов: параметров, команд и арифметических.

  • Перенаправление ввода-вывода (redirections).

  • Команды вычисления выражений и анализа строк символов. Результаты арифметических и логических операций. Экспортирование переменных. Механизм выработки и проверки условий в shell-процедурах. Команда проверки истинности отношений при проверке файлов, числовых значений и анализе символьных строк. Синтаксис команды.

  • Программирование в Bash. Понятие shell-процедуры. Создание. Исполнение. Передача и обработка параметров.

  • Понятие среды пользователя и средства её настройки.

Команды и файлы

  • Команды: bash, env, history, clear, echo, exit.
  • Файлы и каталоги: /usr/share/doc.

Лабораторная работа

  1. Лабораторная работа "Сценарии Bash"

Ссылки Bash:

  1. Официальный сайт GNU Bash
  2. Искусство командной строки
  3. Introduction to Advanced Bash Usage
  4. Сервис, который расшифровывает команды Bash
  5. Исходные коды примеров из книги Chris Johnson 'Pro Bash Programming'
  6. Исходные коды примеров из книги 'bash Cookbook'
⚠️ **GitHub.com Fallback** ⚠️