bash скрипты linux книга

Введение

Почему написано это руководство?

Основной причиной для написания этого документа является то, что для большинства читателей существующие HOWTO оказываются слишком краткими и неполными, а руководство «Advanced Bash-Scripting Guide» («Искусство программирования на языке сценариев командной оболочки») содержит слишком много справочного материала. И между этими двумя крайностями ничего нет. Также я писала это руководство еще и потому, что имеющихся бесплатных базовых курсов недостаточно, хотя их следует прослушать.

Это практическое руководство, в котором я, хотя и не всегда в достаточно серьезном стиле, даю примеры из реальной жизни вместо теоретических примеров. Отчасти я писала, что это связано с тем, что не хочу приводить урезанных и чересчур простых примеров, предлагаемых теми, кто знают, о чем говорят, и показывают некоторые действительно крутые возможности Bash, но настолько вырванные из контекста, что вы никогда не сможете воспользоваться ими в практических условиях. Вы можете прочитать об этом после изучения настоящей книги, содержащей упражнения и примеры, которые помогут вам в реальной жизни.

Из моего практического опыта, как пользователя UNIX/Linux, системного администратора и преподавателя, я знаю, что люди могут годами ежедневно общаться со своими системами и совсем не знать, как автоматизировать выполнение задач. Поэтому часто они думают, что система UNIX неудобна для пользователей, и, что еще хуже, у них складывается впечатление, что это медленная и старомодная система. Это еще одна проблема, с которой можно будет справиться с помощью настоящего руководства.

Кто должен прочитать эту книгу?

Пользу от чтения этой книги может извлечь каждый, кто работает с системами UNIX или UNIX-подобными системами, кто хочет облегчить жизнь себе, опытным пользователям, а также системным администраторам. Читатели, у которых уже есть понимание о том, как с помощью командной строки работать с системой, узнают все подробности создания скриптов командной оболочки, с помощью которых можно облегчить выполнение повседневных задач. В системном администрировании полагаются в основном на создание скриптов; повседневные задачи часто автоматизируются с помощью простых скриптов. В этом документе масса примеров, которые воодушевят вас на написание своих собственных скриптов и подвигнут вас улучшить уже существующие скрипты.

Прежде, чем перейти к настоящему курсу:

bash скрипты linux книга

Рис.1. Обложка книги «Руководство по Bash для начинающих»

Настоящее руководство было переведено:

Осуществляется перевод на французский язык и ссылка на него будет дана сразу после завершения перевода.

История изменений

Учтены пожелания читателей: исправлены объяснения команды shift в главе 9, опечатки в главе 7, главе 3, главе 10.

Источник

Основы BASH. Часть 1

Введение

break выход из цикла for, while или until
continue выполнение следующей итерации цикла for, while или until
echo вывод аргументов, разделенных пробелами, на стандартное устройство вывода
exit выход из оболочки
export отмечает аргументы как переменные для передачи в дочерние процессы в среде
hash запоминает полные имена путей команд, указанных в качестве аргументов, чтобы не искать их при следующем обращении
kill посылает сигнал завершения процессу
pwd выводит текущий рабочий каталог
read читает строку из ввода оболочки и использует ее для присвоения значений указанным переменным.\
return заставляет функцию оболочки выйти с указанным значением
shift перемещает позиционные параметры налево
test вычисляет условное выражение
times выводит имя пользователя и системное время, использованное оболочкой и ее потомками
trap указывает команды, которые должны выполняться при получении оболочкой сигнала
unset вызывает уничтожение переменных оболочки
wait ждет выхода из дочернего процесса и сообщает выходное состояние.

И конечно же кроме встроенных команд мы будем использовать целую кучу внешних, отдельных команд-программ, с которыми мы познакомимся уже в процессе

Что необходимо знать с самого начала

1. Любой bash-скрипт должен начинаться со строки:

#!/bin/bash
в этой строке после #! указывается путь к bash-интерпретатору, поэтому если он у вас установлен в другом месте(где, вы можете узнать набрав whereis bash) поменяйте её на ваш путь.
2. Коментарии начинаются с символа # (кроме первой строки).
3. В bash переменные не имеют типа(о них речь пойдет ниже)

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

Приведу как пример небольшой пример, который мы разберем:

Результат выполнения скрипта:

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

Условия

Условные операторы, думаю, знакомы практически каждому, кто хоть раз пытался на чем-то писать программы. В bash условия пишутся след. образом (как обычно на примере):
#!/bin/bash
source=$1 #в переменную source засовываем первый параметр скрипта
dest=$2 #в переменную dest засовываем второй параметр скрипта

Условия. Множественный выбор

esac #окончание оператора case.

Результат работы:
ite@ite-desktop:

UPD: Исправил некоторые ошибки
UPD: Обновил часть про условия if-then-else

Источник

Bash-скрипты: начало

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.

bash скрипты linux книга

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

bash скрипты linux книга

Итак, если говорить о командной строке, она позволяет выполнить несколько команд за один раз, введя их через точку с запятой:

На самом деле, если вы опробовали это в своём терминале, ваш первый bash-скрипт, в котором задействованы две команды, уже написан. Работает он так. Сначала команда pwd выводит на экран сведения о текущей рабочей директории, потом команда whoami показывает данные о пользователе, под которым вы вошли в систему.

Используя подобный подход, вы можете совмещать сколько угодно команд в одной строке, ограничение — лишь в максимальном количестве аргументов, которое можно передать программе. Определить это ограничение можно с помощью такой команды:

Командная строка — отличный инструмент, но команды в неё приходится вводить каждый раз, когда в них возникает необходимость. Что если записать набор команд в файл и просто вызывать этот файл для их выполнения? Собственно говоря, тот файл, о котором мы говорим, и называется сценарием командной строки.

Как устроены bash-скрипты

Команды оболочки отделяются знаком перевода строки, комментарии выделяют знаком решётки. Вот как это выглядит:

Тут, так же, как и в командной строке, можно записывать команды в одной строке, разделяя точкой с запятой. Однако, если писать команды на разных строках, файл легче читать. В любом случае оболочка их обработает.

Установка разрешений для файла сценария

bash скрипты linux книга

Попытка запуска файла сценария с неправильно настроенными разрешениями

Сделаем файл исполняемым:

Теперь попытаемся его выполнить:

После настройки разрешений всё работает как надо.

bash скрипты linux книга

Успешный запуск bash-скрипта

Вывод сообщений

Вот что получится после запуска обновлённого скрипта.

bash скрипты linux книга

Вывод сообщений из скрипта

Использование переменных

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

Нет ничего плохого в исполнении отдельных команд без хранения результатов их работы, но возможности такого подхода весьма ограничены.

Существуют два типа переменных, которые можно использовать в bash-скриптах:

Переменные среды

Иногда в командах оболочки нужно работать с некими системными данными. Вот, например, как вывести домашнюю директорию текущего пользователя:

bash скрипты linux книга

Использование переменной среды в сценарии

А что если надо вывести на экран значок доллара? Попробуем так:

В подобной ситуации поможет использование управляющего символа, обратной косой черты, перед знаком доллара:

Теперь сценарий выведет именно то, что ожидается.

bash скрипты linux книга

Использование управляющей последовательности для вывода знака доллара

Пользовательские переменные

В дополнение к переменным среды, bash-скрипты позволяют задавать и использовать в сценарии собственные переменные. Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария.

Как и в случае с системными переменными, к пользовательским переменным можно обращаться, используя знак доллара:

Вот что получится после запуска такого сценария.

bash скрипты linux книга

Пользовательские переменные в сценарии

Подстановка команд

Одна из самых полезных возможностей bash-скриптов — это возможность извлекать информацию из вывода команд и назначать её переменным, что позволяет использовать эту информацию где угодно в файле сценария.

Сделать это можно двумя способами.

При втором подходе то же самое записывают так:

А скрипт, в итоге, может выглядеть так:

bash скрипты linux книга

Скрипт, сохраняющий результаты работы команды в переменной

Математические операции

bash скрипты linux книга

Математические операции в сценарии

Управляющая конструкция if-then

А вот рабочий пример:

В данном случае, если выполнение команды pwd завершится успешно, в консоль будет выведен текст «it works».

Вот что получается после запуска этого скрипта.

bash скрипты linux книга

В этом примере, если пользователь найден, скрипт выведет соответствующее сообщение. А если найти пользователя не удалось? В данном случае скрипт просто завершит выполнение, ничего нам не сообщив. Хотелось бы, чтобы он сказал нам и об этом, поэтому усовершенствуем код.

Управляющая конструкция if-then-else

Напишем такой скрипт:

bash скрипты linux книга

Запуск скрипта с конструкцией if-then-else

Ну что же, продолжаем двигаться дальше и зададимся вопросом о более сложных условиях. Что если надо проверить не одно условие, а несколько? Например, если нужный пользователь найден, надо вывести одно сообщение, если выполняется ещё какое-то условие — ещё одно сообщение, и так далее. В подобной ситуации нам помогут вложенные условия. Выглядит это так:

Сравнение чисел

В скриптах можно сравнивать числовые значения. Ниже приведён список соответствующих команд.

В качестве примера опробуем один из операторов сравнения. Обратите внимание на то, что выражение заключено в квадратные скобки.

Вот что выведет эта команда.

bash скрипты linux книга

Сравнение чисел в скриптах

Значение переменной val1 больше чем 5, в итоге выполняется ветвь then оператора сравнения и в консоль выводится соответствующее сообщение.

Сравнение строк

В сценариях можно сравнивать и строковые значения. Операторы сравнения выглядят довольно просто, однако у операций сравнения строк есть определённые особенности, которых мы коснёмся ниже. Вот список операторов.

Вот пример сравнения строк в сценарии:

В результате выполнения скрипта получим следующее.

bash скрипты linux книга

Сравнение строк в скриптах

Вот одна особенность сравнения строк, о которой стоит упомянуть. А именно, операторы «>» и « » как команду перенаправления вывода.

Вот как работа с этими операторами выглядит в коде:

Вот результаты работы скрипта.

bash скрипты linux книга

Сравнение строк, выведенное предупреждение

Обратите внимание на то, что скрипт, хотя и выполняется, выдаёт предупреждение:

Теперь всё работает как надо.

bash скрипты linux книга

Она отсортирует строки из файла так:

Если его запустить, окажется, что всё наоборот — строчная буква теперь больше прописной.

bash скрипты linux книга

Команда sort и сравнение строк в файле сценария

В командах сравнения прописные буквы меньше строчных. Сравнение строк здесь выполняется путём сравнения ASCII-кодов символов, порядок сортировки, таким образом, зависит от кодов символов.

Проверки файлов

Пожалуй, нижеприведённые команды используются в bash-скриптах чаще всего. Они позволяют проверять различные условия, касающиеся файлов. Вот список этих команд.

Эти команды, как впрочем, и многие другие рассмотренные сегодня, несложно запомнить. Их имена, являясь сокращениями от различных слов, прямо указывают на выполняемые ими проверки.

Опробуем одну из команд на практике:

Этот скрипт, для существующей директории, выведет её содержимое.

bash скрипты linux книга

Вывод содержимого директории

Полагаем, с остальными командами вы сможете поэкспериментировать самостоятельно, все они применяются по тому же принципу.

Итоги

Сегодня мы рассказали о том, как приступить к написанию bash-скриптов и рассмотрели некоторые базовые вещи. На самом деле, тема bash-программирования огромна. Эта статья является переводом первой части большой серии из 11 материалов. Если вы хотите продолжения прямо сейчас — вот список оригиналов этих материалов. Для удобства сюда включён и тот, перевод которого вы только что прочли.

Уважаемые читатели! Просим гуру bash-программирования рассказать о том, как они добрались до вершин мастерства, поделиться секретами, а от тех, кто только что написал свой первый скрипт, ждём впечатлений.

Источник

Bash скрипты linux книга

Библиотека сайта rus-linux.net

Разработка хороших скриптов

Особенности хороших скриптов

Данное руководство касается, главным образом, последней составляющей — скриптов. Перед тем, как продолжить, укажем на некоторые общие соображения:

Структура

Структура скрипта является очень гибкой. Хотя Bash позволяет много чего делать, вам для того, чтобы можно было легко и правильно выполнять скрипт, требуется обеспечить корректную логику, правильную последовательность выполнения команд и должную эффективность.

Когда вы начинаете новый скрипт, задайте себе следующие вопросы:

Терминология

В таблице, приведенной ниже, дается обзор программистских терминов, с которыми вы должны быть знакомы:

Таблица.1.1. Обзор программистских терминов

ТерминЧто означает?
Управление исполнением командПроверка кода завершения команды с тем, чтобы знать, должен ли выполнятся следующий фрагмент программы.
Условное ветвлениеЛогическое место в программе, где определяется, что будет происходить дальше
Логика программыОбщая логика программы. Определяется логическая последовательность задач, которые должны быть выполнены с тем, чтобы получить результат.
ЦиклЧасть программы, которая выполняется ноль или более раз.
Пользовательский вводИнформация, получаемая из внешнего источника в процессе работы программы, которую можно сохранить и снова использовать, когда это будет необходимо

Порядок и логика разработки скрипта

Для того чтобы ускорить процесс разработки, нужно заранее продумать логическую структуру программы. Это ваш первый шаг при разработке скрипта.

Можно использовать ряд методов; один из наиболее часто используемый — это использовать списки. Составьте список задач, с помощью которых вы сможете в программе описать все процессы. Отдельные задачи можно обозначать их порядковыми номерами.

Если вы точно опишите на естественном разговорном языке задачи, которые должны выполняться вашей программой, это поможет вам сделать вашу программу более понятной. Впоследствие вы можете заменить каждую инструкцию, записанную на естественном языке, конструкциями на языке командной оболочки.

Ниже приведен пример подобной логической схемы программы. В нем описывается ротация журнальных файлов. В этом примере показан вариант цикла, управление которым зависит от числа журнальных файлов, которые вы хотите использовать в процессе ротации:

Чтобы программа могла что-нибудь сделать, пользователь должен предоставить программе информацию. Нужно получить и сохранить информацию, которую вводит пользователь. Пользователь должен получить уведомление о том, что его файл crontab будет изменен.

1.5.5. Пример скрипта Bash: mysystem.sh

Скрипт всегда начинается с одних и тех же двух символов «#!». После них указывается командная оболочка, которая будет выполнять команды, следующие за первой строкой. Этот скрипт начинается с очистки экрана в строке 2. В строке 3 выдается сообщение, информирующее пользователя о том, что произойдет. В строке 5 выдается приветствие пользователю. Строки 6, 9, 13, 16 и 20 предназначены только для того, чтобы разграничить выдачу сообщений. В строке 8 выдается текущая дата и номер недели. В строка 11 снова выдается информационное сообщение, как и в строках 3, 18 и 22. В строке 12 задается формат выходных данных команды w; в строке 15 указывается информация об операционной системе и о процессоре. В строке 19 выполняется команда uptime и происходит загрузка информации.

Обе команды echo и printf являются встроенными командами Bash. Первая всегда завершается с кодом 0 и просто печатает аргумент, за которым при выводе в стандартный вывод следует символ конца строки, а вторая команда предназначена для задания формата строки и завершается при возникновении отказа ненулевым кодом возврата.

Вот тот же самый скрипт с использованием встроенной команды printf:

Создание удобных скриптов с выдачей дополнительных информационных сообщений рассматривается в главе 8 «Пишем интерактивный скрипт».

bash скрипты linux книгаСтандартное расположения командной оболочки Bourne Again

Если вы выполняете скрипт из cron, то указывайте полные пути к именам файлов и перенаправьте выходной поток и поток сообщений об ошибках. Если вы не подумаете об этом, то поскольку оболочка работает в неинтерактивном режиме, любые сообщения об ошибках приведут к преждевременному завершению работы скрипта.

В следующих главах будут обсуждаться детали работы приведенных выше скриптов.

Пример скрипта init

Ниже приведен очень простой пример скрипта, который будет выполняться при запуске и остановке вашей системы:

Инструкция case, которая часто используются в скриптах такого вида, описана в разделе «Использование инструкций exit и if»

1.5.6. Подводим итог

Bash является командной оболочкой GNU, совместимой с оболочкой Bourne и включающей в себя много полезных функций из других оболочек. Когда запускается командная оболочка, она считывает свои конфигурационные файлы. Наиболее важными из них являются следующие:

Bash ведет себя по другому, когда используется в интерактивном режиме; есть также режим, совместимый со стандартом POSIX, и режим с ограниченным доступом.

Команды, используемые в командной оболочке, можно разделить на три группы: функции оболочки, встроенные команды оболочки и команды, которые расположены в директориях вашей системы. В командной оболочке Bash поддерживает дополнительные встроенные функции, которых нет в оболочке Bourne.

Скрипты командной оболочки создаются из этих команд в соответствие с тем, как это диктуется синтаксисом командной оболочки. Скрипты читаются и исполняются построчно, и они должны иметь логическую структуру.

1.5.7. Упражнения

Предлагаемые ниже несколько упражнений подготовят вас к следующей главе:

Источник

Начало изучения bash-скриптов

Господа аналитики, посоветуйте литературу по Bash-скриптам для человека, который с программированием вообще и с юниксом в частности дела до этого не имел. Я б конечно ABS посоветовал, но может кто знает что-нибудь попроще? Повторю еще раз, человек до этого не программировал вообще, так что нужны прям самые основы

P.S. с английским проблем нет

bash скрипты linux книга

bash скрипты linux книга

bash скрипты linux книга

bash скрипты linux книга

Повторю еще раз, человек до этого не программировал вообще, так что нужны прям самые основы

начать с алгоритмов как таковых, иначе никак

bash скрипты linux книга

bash скрипты linux книга

в интерпретаторе ковыряется, по основным командам чтива тоже отгрузил. А вот по управляющим конструкциям (if/for/while/case), работе с переменными и параметрами, написанию функций и т.д. что бы добавить? Сам кроме man bash и ABS ничего не читал

bash скрипты linux книга

А вот по управляющим конструкциям (if/for/while/case), работе с переменными и параметрами, написанию функций и т.д. что бы добавить?

Язык программирования какой-нибудь. Алгоритмический основы.

Тот же python подойдёт. Или какой-нибудь другой бейсик.

bash скрипты linux книга

Ну начинающим почитать статьи Роббинса про баш (да и про работу в консоли вообще).

bash скрипты linux книга

а вот это кажется интересным, спасибо

bash скрипты linux книга

Advanced Bash-Scripting Guide

bash скрипты linux книга

Есть отличная книга Язык shell Купи её, она стоит 130 р от силы. Карманного формата. В ней есть все что нужно для написания скриптов на bash.

bash скрипты linux книга

ибо кореш ТС совсем не пограмист

bash скрипты linux книга

еще в гугле есть много интересного по слову «bash cheat sheet». Может и книги никакие не понадобятся чтобы быстро что-то запилить

bash скрипты linux книга

Я считаю, что не следует учить bash, так как это линуксо-специфичная вещь, а надо учить стандартный unix shell. В OpenBSD не bash, а ksh, например. Чтобы не пришлось переучиваться после перехода на BSD систему.

bash скрипты linux книга

не нужно вим нужно эд ненужно баш нужно ш

а ежель прогать циклы то сисечка ежель асоциативные массивы то авка|питончик

эт всё что б не переучиватся.

однако в том и отачивание квалификации и мастерства когда чел сам приходит к универсальному почерку уменшая использования специфических фич которые он использует при плотном использовании конкретного инструмента.

bash скрипты linux книга

Не нужно начинать с шелл-скриптов. Хотя и переходить на них тоже не нужно.

bash скрипты linux книга

Всю ветку не читал.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

bash скрипты linux книгаЕсли отсутствует стандартный выходной поток stdout