Основы программирования на языке Bash
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Издательство:
ФЛИНТА
Автор:
Пирогов Владислав Юрьевич
Год издания: 2024
Кол-во страниц: 94
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9765-5653-9
Артикул: 846533.01.99
В данном учебном пособии рассматриваются особенности программирования на языке Bash. Рассматриваются основные особенности языка, которые рассматриваются в контексте операционной системы Linux. В пособии подробно описываются основные программные структуры и типы данных: условные конструкции, циклы. Функции, модули, строки и массивы. Особенностью данного пособия является большое количество рабочих программ, иллюстрирующих те или иные особенности программирования на Bash.
Для студентов и преподавателей.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
В.Ю. Пирогов ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ Bash Учебное пособие Москва Шадринск Издательство «ФЛИНТА» ШГПУ 2024 2024
УДК 004.42(075.8) ББК 32.973.2я73 П33 Рецензенты: кандидат педагогических наук, доцент Д.А. Слинкин, кандидат физико-математических наук, доцент Д.М. Гордиевских Пирогов В.Ю. П33 Основы программирования на языке Bash : учеб. пособие / В.Ю. Пирогов. — Москва : ФЛИНТА, 2024. — 94 с. — ISBN 978-5-9765-5653-9 (ФЛИНТА); ISBN 978-5-87818-737-4 (ШГПУ). — Текст : электронный. В данном учебном пособии рассматриваются особенности программирования на языке Bash. Рассматриваются основные особенности языка, которые рассматриваются в контексте операционной системы Linux. В пособии подробно описываются основные программные структуры и типы данных: условные конструкции, циклы. Функции, модули, строки и массивы. Особенностью данного пособия является большое количество рабочих программ, иллюстрирующих те или иные особенности программирования на Bash. Для студентов и преподавателей. УДК 004.42(075.8) ББК 32.973.2я73 ISBN 978-5-9765-5653-9 (ФЛИНТА) © Пирогов В.Ю., 2024 ISBN 978-5-87818-737-4 (ШГПУ) © ШГПУ , 2024 2
ОГ ЛАВЛЕНИЕ ВВЕДЕНИЕ ................................................................................................. 4 1. ИНСТРУМЕНТЫ РАБОТЫ НА BASH ............................................ 6 2. ВЫВОД ДАННЫХ ............................................................................. 8 2.1. Команда echo ................................................................................ 8 2.2. Управляющие конструкции внутри строк ................................. 9 2.3. Команда вывода printf ................................................................. 11 3. КОММЕНТАРИИ В ПРОГРАММАХ НА ЯЗЫКЕ BASH ............ 13 4. ПЕРЕМЕННЫЕ ................................................................................. 14 5. ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ ................................... 178 6. ВЕЩЕСТВЕННЫЕ ЧИСЛА И ОПЕРАЦИИ НАД НИМИ ........... 22 7. ВВОД ДАННЫХ С КЛАВИАТУРЫ ............................................... 26 8. ПАРАМЕТРЫ КОМАНДНОЙ СТРОКИ........................................ 28 9. ПЕРЕНАПРАВЛЕНИЕ И КОНВЕЙЕРИЗАЦИЯ ........................... 31 10. ПРОГРАММНЫЕ СТРУКТУРЫ................................................... 36 10.1. Условные конструкции ............................................................ 36 10.2. Циклы ........................................................................................ 42 10.3. Функции .................................................................................... 46 10.4. Модули и программы ............................................................... 53 11. МАССИВЫ В BASH....................................................................... 63 12. ОПЕРАЦИИ НАД СТРОКАМИ .................................................... 72 13. ФАЙЛЫ ............................................................................................ 81 ЗАКЛЮЧЕНИЕ ......................................................................................... 89 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ................................ 90 ПРИЛОЖЕНИЯ ........................................................................................ 91 3
ВВЕДЕНИЕ Bash представляет собой и командный интерпретатор, и язык программирования, используемый в Unix-подобных операционных системах. Bash это аббревиатура «Bourne-Again Shell» (и снова оболочка Борна), указывающая на Стивена Борна (Stephen Bourne), который разрабатывал предшественника Bash – командную оболочку sh. В операционных системах семейства Linux Bash устанавливается по умолчанию. Интерпретатор Bash работает как в интерактивном, так и в программном режиме. Интерактивный режим предполагает выполнение строк, содержащих команду в строке терминала. Программный режим основан на выполнении строк-команд, содержащихся в текстовом исполняемом файле. Соответственно набор команд Bash дополнен структурами, характерными для алгоритмических языков: условные конструкции, циклы, функции. Последнее позволяет назвать Bash полноценным языком программирования, позволяющим создавать программный код разной степени сложности. Программные модули1 на языке Bash, в свою очередь, могут запускаться как команды, т.е. становятся частью командного языка. Язык программирования Bash является частью операционной системы, инструментом, позволяющим автоматизировать многие операции, характерные для деятельности системных администраторов. По этой причине Bash является незаменимым инструментом администрирования Unix-подобных операционных систем. С помощью Bash можно автоматизировать повторяющиеся операции, например, архивацию данных, анализ текстовых файлов, 1 Ниже понятие модуля будет рассмотрено в отдельном разделе. Здесь мы только отметим, что обычно программным модулем называют файл, содержащий программный код. 4
проверка сетевых параметров, удаления не нужных файлов и многое другое. В операционных системах семейства Unix имеется огромное количество системных программ, выполняющих самые разные действия. Благодаря таким технологиям как конвейеризация и перенаправление они легко интегрируются в программы на языке Bash. Мы не ставили своей целью дать справку по всем системным программам операционной системы, а лишь показываем принципы их программного использования. Язык Bash имеет текстовый интерфейс, т.е. команда в командной строке или текстовый файл, содержащий программу на этом языке. Для него нет графического интерфейса. Это и дань традиции, поскольку когда-то операционная система начиналась именно с текстовых консольных окон. Но это и естественный подход, поскольку и в современных условиях очень часто доступ (особенно удаленный) к Unix-серверам возможен только через окно терминала. Целями данного учебного пособия являются: 1. Показать, что Bash не просто набор некоторых команд, позволяющих создавать простые сценарии по выполнению определенных действий в операционной системе, но и полноценный и богатый возможностями язык программирования. 2. Дать сжатое изложения Bash, позволяющее быстро перейти к написанию полноценных программного кода на этом языке. Мы предполагаем, что, во-первых, читатель знаком с программированием на любом из существующих алгоритмических языков, во-вторых, знаком с командами операционной системы Linux (все равно какой). Эти знания, на наш взгляд, помогут легко освоить основы написания программ на языке Bash. 5
1. ИНСТРУМЕНТЫ РАБОТЫ НА BASH Программа на языке Bash это обычный текстовый файл, состоящий из команд языка Bash, который: 1. Сделан исполняемым. 2. Содержит в первой строке указание на программу, которая будет его обрабатывать: #!/bin/bash Хорошим инструментом для работы с программами на языке Bash является программа (файловый менеджер) Midnight Commander (или просто mc), которая запускается в окне консоли (см. Рис. 1). Рис. 1. Окно файлового менеджера Midnight Commander Для установки файлу атрибуту «Исполняемый» достаточно обратиться к меню mc: «Файл/Права доступа» и поставить соответствующую отметку. Но можно это сделать командой chmod 766 имя_файла В результате для владельца файл «имя_файла» становится исполняемый. В операционной системе Linux расширение файла не обязательный атрибут, хотя для программ на языке Bash обычным расширением является .sh. 6
У программы Midnight Commander есть свой простой текстовый редактор с чувствительным к языку Bash синтаксисом, с помощью которого можно набирать и редактировать простые программы (см. Рис. 2). Рис. 2. Редактор программы Midnight Commander с программой на языке Bash В качестве редактора для программ Bash можно использовать любой другой текстовый редактор, например, Nano или Vim. Но для разработки большой программы, конечно, есть смысл использовать профессиональную среду разработки. В качестве такой среду, можно, например, использовать универсальную среду Geany, которая легко устанавливается в Linux из стандартного репозитория. Есть и профессиональная среда разработки basheclipse, которую можно установить из Интернет. Контрольные вопросы 1 Укажите как с помощью Midnight Commander сделать скрипт на Bash исполняемым. 2 Укажите команду, с помощью которой можно сделать скрипт на Bash исполняемым. 3 Укажите смысл первой строки скрипта (программы) на Bash. 7
2. ВЫВОД ДАННЫХ 2.1. Команда echo Программа на любом языке программирования оперирует данными. Эти данные как-то должны попасть в программу. Результат выполнения программы – это тоже данные, и они должны быть или показаны пользователю или переданы другой программе. Начнем с простого вывода в консольное окно #!/bin/bash echo "Hello, world!"; echo "Hello, world"; echo "Hello, worl"; echo "Hello, wor"; echo "Hello, wo"; echo "Hello, w"; echo "Hello, "; echo "Hello,"; echo "Hello"; Рис. 3. Вывод на консоль строковых констант Результат выполнения программы Hello, world! Hello, world Hello, worl Hello, wor Hello, wo Hello, w Hello, Hello, Hello 8
Как легко понять echo – это команда, выводящая на консоль, указанную в качестве параметра, строковую константу. Двойные кавычки в программе на рис. 3 можно заменить одинарными: echo 'Hello, world!' Следует отметить, что одинарные и двойные кавычки далеко не всегда взаимозаменяемы. Ниже мы это обсуждаем. В программе на рис. 3 в конце каждой программной строки стоит точка с запятой. Это в принципе не обязательное требование, но давайте возьмем это за правило, так как точка с запятой строку, в которой стоит несколько операторов более понятной. Для запуска выше представленной программы (назовем ее pr1.sh) следует сделать ее исполняемой, о чем мы писали в предыдущем разделе. Соответственно запустить ее можно командой ./pr1.sh при условии, что программа находится в текущем каталоге, в противном случае следует указать полный путь к ней. Либо запустить ее командой bash ./pr1.sh здесь команда bash это имя программы-интерпретатора языка Bash. 2.2. Управляющие конструкции внутри строк В представлении строк важную роль играет символ «обратный слеш» - '\'. Этот символ позволяет вставлять в строку управляющие конструкции. Говорят, что этот символ экранирует следующий за ним символ, меняет его свойство. Типичным примером использования '\' будет ситуация, когда внутри строки, ограниченный двойными кавычками мы хотим также использовать двойные кавычки. Чтобы 9
эти конструкции работали для команды echo нужно указывать ключ - e. echo -e "\"Привет\", мир!" Результат выполнения "Привет", мир! Впрочем, возможен и такой вариант с тем же результатом echo -e '"Привет", мир!' Перечислим варианты использования символа «обратный слеш» \\ – вывод символа «\»; \a – звуковой сигнал; \b – удаление предыдущего символа; \c – подавление дальнейшего вывода; \e – прекращение работы; \f – переход к следующей терминальной странице; \n – переход к следующей строке; \r – переход к началу строки; \t – горизонтальная табуляция; \v – вертикальная табуляция; \0NNN – символ, определяемый трехзначным восьмеричным числом (три восьмибитовых цифры); \xHH – символ, определяемый двухзначным шестнадцатеричным числом; \uHHHH – символ Unicode с шестнадцатеричным кодом (четыре цифры в 16-ричной системе счисления); UHHHHHHHH – символ Unicode с шестнадцатеричным кодом (восемь цифр в 16-ричной системе счисления). \cx – символ соответствующий ctrl-x (например, \cc - ctrl-c). Например: (см. Рис 4) #!/bin/bash 10