Практическое руководство: Цикл в Bash с примерами

Убедитесь, что на вашем сервере установлен Sendmail.

Большинство современных операционных систем, за исключением WINDOWS, построены на базе UNIX. Среди них много дистрибутивов Linux, macOS, iOS, Android и др. Достаточно одного взгляда на схему развития операционных систем, основанных на UNIX, чтобы подчеркнуть важность UNIX, и именно по этой причине она стала широко использоваться на производстве. На самом деле, бэк-энд многих вычислительных систем, включая такие промышленные гиганты, как Facebook и Google, в значительной степени используют UNIX.

Shell

Shell — это интерфейс командной строки для запуска программ на компьютере. Пользователь набирает в строке запроса кучу команд, оболочка запускает программы для пользователя, а затем выводит результат. Команды могут быть либо введены непосредственно пользователем, либо прочитаны из файла, называемого shell-скриптом или shell-программой.

Практическое руководство: Цикл в Bash с примерами

Shell. Какие бывают

UNIX-система обычно предлагает различные типы оболочек shell. Некоторые из них наиболее распространены:

Однако в этой статье мы ограничимся оболочкой Bash. Тем не менее, вам рекомендуется прочитать и попробовать другие оболочки, особенно zsh, так как уже в версии MacOS под названием Catalina zsh заменил оболочку bash. Так что будет хорошей идеей познакомиться с ним сейчас.

Terminal

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

Практическое руководство: Цикл в Bash с примерами

У Mac и Linux есть соответствующие версии терминала. Windows также имеет встроенную командную оболочку, но она основана на командной строке MS-DOS, а не на UNIX. Так что давайте посмотрим, как мы можем установить шелл и программу терминала в операционной системе Windows, которая работает так же, как и в системах Mac и Linux.

Установка терминала в WINDOWS

  • Подсистема Windows для Linux (WSL)

Это новая система совместимости с Linux в Windows 10. WSL позволяет разработчикам запускать GNU/Linux окружение — включая большинство инструментов командной строки, утилит и приложений — прямо под Windows, без изменений, без дополнительных виртуальных машин. Подробнее о его установке и функциях вы можете прочитать здесь.

  • Git Bash
Практическое руководство: Цикл в Bash с примерами

Git Bash — это то, что мы будем использовать в этой статье. Скачайте Git на компьютер с Windows отсюда и установите его со всеми настройками по умолчанию. В конце концов, вы получите окно терминала, вроде того, что показано ниже.

Изучение терминала

Всякий раз, когда мы открываем окно терминала, мы видим наши последние учетные данные для входа и приглашение Shell. Строка shell появляется всякий раз, когда оболочка готова принять входные данные. Она может немного отличаться в зависимости от дистрибутива, но в основном она отображается как имяпользователя@имякомпьютера, за которым следует знак $.

Читайте также:  Какой выбрать принтер для дома: обзор марок

Если вам не нужна вся эта информация, вы можете использовать PS1 для настройки командной строки.

Теперь терминал будет показывать только $ в строке. Однако это только временно и после перезапуска терминал вернется к своим первоначальным настройкам.

Практическое руководство: Цикл в Bash с примерами

Приступим

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

  • echo: выводит все, что вы набираете в командной строке шелла, аналогично Print на Python.
  • date: отображает текущие время и дату.
  • cal: отображает календарь на текущий месяц.
Практическое руководство: Цикл в Bash с примерами
  • clear: очистит окно терминала, также можно использовать сочетание клавиш Ctrl-L.

Несколько способов ускорить bash-скрипты

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

    Создадим в командной строке Linux пустой файл (назовем его для примера firstscript) и откроем его на редактирование в любимом текстовом редакторе (vi/vim, nano, gedit и т.д.):
  1. Скопируем/вставим или просто наберем вручную следующий текст:
  2. Выйдем из текстового редактора с сохранением созданного файла.
  3. Сделаем наш скрипт исполняемым, чтобы в дальнейшем мы его могли без проблем запускать из командной строки, выполнив команду:
  4. Попробуем запустить созданный нами скрипт, выполнив в командной строке: И, вот результат:

Как это все работает:

первая строка нашего скрипта крайне необходима, для того, чтобы наш скрипт успешно выполнился.

вторая строка создает каталог testdir

третья строка позволяет перейти в созданный каталог testdir

команда touch в следующей строке создает три файла

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

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

Если вы ежедневно выполняете цепочку каких-либо одинаковых команд (с постоянными параметрами) в Linux, то возможно вам имеет смысл написать такой же простой скрипт на bash, который позволит вам сэкономить ваше время и автоматизировать вашу работу.

Часто бывает, что необходимо автоматизировать какое-то действие. На помощь всегда приходят bash-скрипты! Не забываем, что для того, чтоб скрипт можно было запустить, надо изменить права доступа к нему, добавив возможность исполнения файла.

, перенаправление

#!/bin/bash # Любой shell-скрипт всегда начинается со строчки #!/bin/bash (или #!/bin/sh) # Комментарии всегда начинаются со знака # # Для того, чтоб вывести на экран сообщение, используем команду ECHO echo "hello, world" # а это пример форматированного вывода…

почти как в Си printf "форматированный вывод десять=%d строка=%s float=%f шестнадцатиричное_число=0x%X\n" 10 "строка" 234 # пример чтения ввода с клавиатуры read A echo $A printf " вы только что ввели слово: %s\n" "$A" #перенаправление, конвейеры, получение результата вывода другой программы # пример генерации пароля из 10 букв PASSWORD1=`cat /dev/urandom | tr -d -c ‘a-zA-Z0-9’ | fold -w 10 | head -1` echo Password=$PASSWORD1 #кавычки вида « дают результат вывода на экран того, что внутри них (т.е. выполняется #программа или скрипт, написанные внутри таких кавычек и результат, выводимый ими на #стандартный вывод является результатом операции "обратные кавычки" #в данном случае результатом является вывод конвейера из нескольких программ.

Читайте также:  10 статей по SQL, которые должен прочитать каждый

Интересные bash скрипты для любителей терминала в Linux

#операция | обозначает конвейер. Т.е. в нашем примере: #cat /dev/urandom выводит на содержимое файла /dev/urandom ( для генерации ) #tr осуществляет трансляцию,т.е. заменяет одни байты другими (это нужно, чтоб избежать появления в пароле непе- #чатаемых символов) #fold разбивает то, что ей пришло на на строки длиной 10 символов и выводит это на #head -1 выводит первую строчку того, что ей пришло на стандартный ввод. # или так: PASSWORD2=`cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c10` echo Password=$PASSWORD2

действия, циклы по кол-ву раз

#!/bin/bash A="10" B="5" C=`expr $A + $B` printf "A=10 B=5 C=expr \$A + \$B C=%d \n" "$C" # пример цикла по i I=0 while [ $I -lt 15 ] do printf "0x%02x " "$I" I=`expr $I + 1` done echo

рода проверки

#!/bin/bash # пример проверки существования файла # создаем файл test1 touch test1 # проверяем существование файла test1 if [ -f test1 ] ; then echo "файл test1 существует" fi # проверяем несуществование файла test2 if ! [ -f test2 ] ; then echo "файл test2 не существует" fi # краткая справка по другим опциям команды [ ] # -d filename директория существует # -f filename файл существует # -L filename символьная ссылка существует # -r, -w, -x файл доступен для чтения, записи или выполнения # -s filename файл существует и имеет ненулевую длину # f1 -nt f2 f1 новее чем f2 # f1 -ot f2 f1 старше чем f2

Метки: bash, freebsd, shell

Написать комментарий через:

Практическое руководство.

Дейв Тейлор, Брендон Перри «Сценарии командной оболочки. Linux, OS X и Unix» Питер, 2017 год, 448 стр., (6,43 мб. pdf + 4,67 мб. epub)

Это второе издание книги,(первое издание книги вышло в 2004 году) дополнены новыми материалами 12 глав, добавлено 3 новые главы. В книге демонстрируются приемы создания сценариев в командной оболочке bash (скрипты). Приводятся практические примеры программирования самых распространенных (типичных) задач. с которыми сталкиваются системные администраторы и активные пользователи Unix — подобных систем.

Пользователям Windows 10, также будет интересно попробовать свои силы в создании сценариев (Microsoft выпустила bash для десятки), см. приложение A: Установка Bash в Windows 10. Все приводимые примеры: настройка и управление системой, работа с сетью, администрирование WEB-сервера и сценарии полезные для веб-мастеров, работа в облаке, с файлами и др. — могут быть взяты за основу и использоваться как шаблоны.

Используя данные примеры можно создавать и приспосабливать bash-скрипты под собственные нужды. Для начинающих пользователей обязательно следует прочесть Главу 0 (Краткое введение в сценарии командной оболочки), это новая глава, добавлена во второе издание. ISBN 978-5-496-03029-8

Скачать техническую литературу бесплатно6,43 мб. pdf Скачать техническую литературу бесплатно4,67 мб. epubПохожая литератураЯзык программирования C# 2010 и платформа .NET 4Объектно-ориентированный подходC# для начинающихФреймворк jQuery MobileGraphQL. Язык запросов для современных веб-приложений 92_i_seti/programmirovanie/bash-skriptyBash скрипты-content/uploads/2017/08/-content/uploads/2017/08/2017-08-06T21:47:06+04:00Программирование и БДbash,Linux,OS X,Unix,ПрограммированиеПрактическое руководство. Дейв Тейлор, Брендон Перри ‘Сценарии командной оболочки. Linux, OS X и Unix’ Питер, 2017 год, 448 стр., (6,43 мб. pdf + 4,67 мб. epub) Это второе издание книги,(первое издание книги вышло в 2004 году) дополнены новыми материалами 12 глав, добавлено 3 новые главы. В книге демонстрируются приемы создания сценариев…SomМихаил Михайлов[email protected]EditorТехническая литератураПоделиться

Командная оболочка в качестве языка программирования

Итак, командную оболочку можно рассматривать как язык программирования и как программную среду выполнения одновременно. Разумеется, этот язык не компилируемый, а интерпретируемый. Он допускает использование переменных: системных или собственных. Последовательность выполнения команд программы изменяется с помощью конструкций проверки условия и выбора соответствующего варианта: if-then-else и case. Циклы while, until и for позволяют автоматизировать многократно повторяющиеся действия. Имеется возможность объединять группы команд в логические блоки. Вы можете даже писать настоящие функции с передачей в них параметров. Таким образом, налицо все признаки и характеристики полноценного языка программирования. Попробуем извлечь из этого двойную пользу – наряду с изучением основ программирования автоматизируем свою повседневную работу.

Как написать простой скрипт на bash

Как запустить последовательно несколько команд в или все сразу? Если вам нужно запустить несколько команд, то между ними ставится символ «; » называемый метасимвол (metacharacter).Синтаксис следующий command1;command2;command3

Команды, разделенные знаком «; » выполняются последовательно. Shell ждет следующей команды, и возвращение в приглашение командной строки происходит после исполнения последней команды.

Одновременное выполнение нескольких команд

Для запуска нескольких команд за один раз, поставив амперсанд «&» в конце из команды. Для примера рассмотрим начало скрипта резервного копирования:

# /root/ &

И ваш терминал свободен для дальнейшего пользования, вам не нужно ждать окончания исполнения скрипта /root/!

Использование всего вместе

У вас может быть тысячи файлов *.bak. Но вам нужно всего-навсего перечислить нужные категории, и поместить все в /tmp/list:

# for d in «/home/sales /home/dbs /data1»; do find $d -iname “*.bak” >> /tmp/list; done &

Источник

Цикл for-in

Оператор for-in предназначен для поочередного обращения к значениям перечисленным в списке. Каждое значение поочередно в списке присваивается переменной.

Синтаксис следующий:

for переменная in список_значений

команды

done

Пример работы цикла for-in с параметрами

#!/bin/bash# Цикл выдаст все переданные аргументыfor n in [email protected]do echo «$n»done

Для тестирования скрипта введи команду, введя перед названием исполняемого файла оператор bash, а в качестве параметров — one two four:

bash parametr one two four

В результате получим следующее:

one

two

four