Bash Scripting: руководство для создания
Опубликованно 22.01.2019 12:11
Bash-скрипты, полезные скрипты для системных администраторов, программистов, сетевых инженеров, научных работников и практически всем, кто регулярно использует систему Linux/Unix. Независимо от того, что пользователь делает и то, что его общий уровень навыков владения компьютером, вы можете найти подходящий для себя способ использовать Bash scripting. Хотя правильно, они называются shell-скрипт, но большинство программистов называют их скриптов Bash.
В качестве интерактивной оболочки-это лаконичный язык, для запуска и управления вычислениями. Как скриптовый язык-это язык, специфичный для домена, для управления и макет процессов и файлов. Определение сценариев Bash
Bash скрипт - интерпретатор языка команд. Он закрыл все в разных операционных системах и анализатор команд по умолчанию в большинстве систем GNU/Linux. Это аббревиатура от «Bourne Again SHell».
Другие определения: Shell является процессор макрос, который позволяет выполнить интерактивный или неинтерактивный выполнения команды. Скрипт позволяет настроить автоматическое выполнение команд, которые в противном случае действовали бы в интерактивном режиме, один за другим.
Bash scripting установлен по умолчанию в большинстве систем GNU/Linux, так что скрипт работает даже без определения в качестве переводчика. Для того, чтобы узнать, что выполняет команду по умолчанию, предписано:
$ echo $SHELL /bin/bash.
Есть и другие переводчики оболочки, как Korn, C и многие другие. По этой причине, мы рекомендуем вам определить, интерпретатор shell, который будет использоваться в частности для содержания сценария.
Теперь все скрипты будут включать в себя определение оболочки shell: #!/bin/bash.
Точнее там написано в литературе Advanced Bash scripting guide. Имена файлов и разрешения
Для того, чтобы запустить скрипт, файл должен быть исполняемый файл, запускается с помощью «chmod +x ИМЯ_ФАЙЛА» команды. По умолчанию все вновь созданные файлы не запускаются независимо от того, суффикса расширение файла. В самом деле, последнее свойство в системах GNU/Linux в принципе не имеет никакого значения.
Во время исполнения «ls» команду, чтобы вывести список всех файлов и каталогов, то сразу становится ясно, что файл с расширением «.sh» - это правдоподобный сценарий оболочки, и с «.jpg» будет сжатый образ. Более подробно о расширения для языка, вы можете прочитать в учебниках Advanced Bash scripting guide.
В системах GNU/Linux file команда может быть использована для того, чтобы определить тип файла. Как видно из следующего примера, расширение файла не имеет никакого значения, и интерпретатор shell в этом случае имеет больший вес.
Таким образом, имя скрипт «0_xyz», вполне допустимо, даже если программисты по возможности стараются избегать. Команды оболочки PATH
При вводе команды в shell, Bash смотрите в определенные каталоги, чтобы знать, если вы можете найти его. Так, согласно Bash scripting guide, если набирают «ls» в оболочке, он выполняет только команды, если она находится на ее пути. Операция завершится с ошибкой, если его не будет в одном из каталогов, которые являются частью маршрута. Если есть один матч больше, чем в одном из каталогов на дороге, он выбирает первый. Возможный путь, чтобы узнать, выполнив:
echo $ PATH.
На экране монитора появиться что-то вроде этого:
/home/jzb/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/jvm/jre/bin. Правильный путь главная каталог
Каждый каталог, в котором, кажется, Bash, делится на два пункта. В этом случае, первый из них будет проверен каталог «bin», а затем / usr / local / bin, / usr / bin.
Если пользователь вошел в систему как root, вы должны увидеть другой набор каталогов, / usr / local / sbin, / usr / sbin.
Вы можете добавить в способ или изменить его, отредактировав файл:
~ / .bashrc и ~ / .bash_profile.
Например: PATH="$HOME/bin:$PATH" .
Вы можете немного изменить это правило и установить advanced Bash scripting. PATH "=" на Основе информации, которые он будет устанавливать пути, и «$ HOME / bin» предлагает добавить в каталог bin и после «$ PATH» рекомендуется в него добавить все, что уже находится на пути.
Параметр«: » - разделитель между элементами. Разработчик видит на экране, что-то вроде этого:
if [ -d "$HOME/bin" ] ;
then PATH="$HOME/bin:$PATH"
fi.
Это правило проверяет, существует ли каталог «bin» в папку home, а затем добавляет, таким образом, от успешного выполнения операции «run script Bash». Строк псевдоним
Псевдоним-это строка, в которой Баш будет заменена другой командой. Простой пример:
alias ls = 'ls --color = auto'.
Это говорит, что, когда запускают «ls», необходимо выполнять «ls --color = auto», без набора все остальное. Вы можете установить псевдоним в командной строке, и это хорошо для тестирования.
При этом имеет смысл установить псевдоним в «~ / .bash_profile и ~ / .bashrc». Или создать что-то подобное в «~ / .aliases» и из-за этого из файл конфигурации следующим образом:
if [ -f ~/.bash_aliases ];
then . ~/.bash_aliases
fi
Для просмотра уже доступны псевдоним, просто бросают в оболочке. Он указан по умолчанию в дистрибутиве. Вот, например, набор по умолчанию, установленный на openSUSE 11.2, без каких-либо изменений.
В качестве теста, вы можете увидеть, что уже установлен дистрибутив, и попытаться сделать пару собственных вариантов. Расширение оболочки
Прежде чем Bash, который выполняет команду, он оценивает вставки и «расширяет» alias и другие выражения, всегда, когда это необходимо. Имеет несколько символов, которые обязательно тянется, чтобы соответствовать один или более символов, и они называются «подстановочные знаки». Это сопоставление моделей может быть очень полезно.
Например, если вам нужно увидеть все файлы в формате JPEG в каталоге запускают «ls *. jpg», при условии, что JPEG-файлы обозначены как «jpg», и Баш будет расширяться, чтобы соответствовать любое имя файла, которое заканчивается in.jpg.
Если вы хотите объединить только 1 символ, используйте «?». Он будет указывать на знак, а затем «ls? .Jpg» совпадают только имена файлов, например, «1.jpg» или «a.jpg» и-не «01.jpg».
Bash позволяет также сравнивать интервалы символов в квадратных скобках. Использование [abc12] станет одним из символов во время расширения. Так, работая «ls -lh [abc12] .jpg», связана с a.jpg, b.jpg, c.jpg, 1.jpg и 2.jpg но не 12.jpg или abc.jpg. Вы можете отказаться от модели с помощью префикса «взрыва» (!), Например: ls -lh [! Ab12] .jpg соответствовать c.jpg или 3.jpg но не 2.jpg и т. д.
Еще один удобный трюк - расширение атаки, когда вам необходимо оформить документы на год и даты. Если, например, в папке ~ / Documents каталог 2010 с подкаталоги с 01 по 12 и не нужно, чтобы распечатать с 01 по 12, делают Баша: mkdir 2010 / {01..12}. Когда вы читаете правило, расширяется, что находится между фигурных скобок, с 01 по 12. Это также работает с буквами, так что, если вам нужно подкаталог z, можно выполнить mkdir {a..z}, и вы будете создавать каталог по z. Может работать также с прописной буквы. Выполнение скрипта
Есть альтернативный способ запуска скриптов Bash. В очень простой способ презентации своего сценария не что иное, как текстовый файл, содержащий инструкции, которые должны быть выполнены по порядку сверху вниз. Как интерпретируются инструкции, зависит от shebang или режим выполнения сценария.
Другой метод тренировки сценарий явно вызвать его переводчик, например, $ bash date.sh. Соответственно, скрипт будет работать без необходимости запускать скрипт и без рекламы shebang, непосредственно в схеме операционной системы, в результате исполняемый бинарный файл bash. Таким образом, содержимое файла date.sh будет загружен и интерпретируются, как Bash Shell Script. Относительный и абсолютный путь
Прежде чем планировать официальный скрипт, например, exit Bash скрипт, нужно определить, навигация с ней и установить разницу между относительным и абсолютным, путь к файлу. Возможно, лучшая аналогия, объясняет относительный и абсолютный путь файла смотреть файловой системы GNU/Linux, как небоскреб.
Корень - входная дверь в здание, обозначенное место, он обеспечивает вход в все file system «настройки», а затем дает доступ ко всем каталогам - «планы» и «комнаты» - и файл - «арендаторы». Например, перейти в комнату 1 на 3-м этаже, необходимо, прежде чем войти в главную дверь, а затем перейти на 3-й этаж (level3)и оттуда войти в комнату (room1). Соответственно, абсолютный путь для этой конкретной комнате на первом этаже в здании «/level3/room1».
Отсюда, если вам нужно посетить camera2 даже на уровне 3, сначала закрыть текущую позицию, что комната 1, введя, «../», и, следовательно, содержать название комнаты «camera2». Если это принимается относительный путь в комнату 2, что в этом случае «../camera2». Так как в этом примере, пользователь уже был на третьем уровне, вы не должны покинуть здание и переделать абсолютный путь через главный вход /level3/camera2.
К счастью, GNU/Linux-это инструмент, простой компас, который помогает программисту передвигаться по файловой системе в виде «pwd» команды. Эта команда всегда выполняет печать текущего местоположения. В следующем примере используется «cd» и «pwd» команда для просмотра файловой системы GNU/Linux, используя абсолютные и относительные пути.
Далее продолжение.
Выполняют «cd» команду без аргументов, для того, чтобы мгновенно перейти в домашний каталог пользователя, из любого места. Как видно, навигации по файловой системе GNU/Linux-это простой, и в то же время очень запутанная тема. Понятие переменных
Почти каждый язык программирования имеет понятие о переменных - символическое имя для той части памяти, которой можно присвоить значения, читать и манипулировать содержанием. Например, для Bash script example, «Hello World» можно выполнить с помощью переменных. Обратите внимание, что не должно быть пробелов вокруг знака «=»: VAR=value работает; VAR = value не работает.
В первом случае оболочка видите символ «=» и обрабатывает команды как присвоение переменной. Во втором случае, оболочка предполагает, что VAR должно быть название команды и его попытке запустить. Введите следующий код var.sh.
Это присваивает переменной «Hello World» переменная MY_MESSAGE. При этом нужны кавычки вокруг строки "Hello World", в то время как переменная может содержать только 1 значение, то строка с пробелами должен быть предъявлен таким образом, чтобы оболочка знал, что все это рассматривается, как один. В противном случае, оболочка попытается выполнить команду «Мир» после назначения «MY_MESSAGE=Привет».
Оболочка не требует, чтобы типы переменных, которые могут хранить строки, целые числа, действительные числа - все то, что нравится пользователю. Программисты, специалисты обращают внимание на то, что специальные символы должны быть надлежащим образом экранированы. Для этого используется команда «shell builtin, read», которая читает строку из стандартного ввода, в комплекте переменной. Если и дать ему имя и фамилию и не использовать кавычки вокруг «эхо» команды, он по-прежнему отображается правильно.
Большинство языков имеют понятие циклов, если необходимо, повторите операцию около двадцати раз, маловероятно, что пользователь хочет вставить код в 20 раз, да, конечно, с ошибками. Для этого есть «for» и «while» цикл в оболочке Bourne.... Это дает немного меньше возможностей, чем другие языки, но никто не утверждает, что программная оболочка имеет силу C. For-цикл повторяется через набор значений, до тех пор, пока список не будет исчерпан, ghb ‘njv значения могут быть любыми. Первый сценарий
Для того, чтобы первый скрипт, вы можете просто написать скрипт, который говорит «Hello World». Создать файл (first.sh) следующим образом: first.sh Первая строка сообщает Unix, что файл должен быть запущен / bin / sh. Путь стандартный shell практически для любой Unix-системы.
Если вы используете Linux, Bash-скрипты, то GNU/Linux / bin / sh, как правило, является символическая ссылка на баш, или совсем недавно был использован в тире. Вторая строка начинается с символа « #». Это знаменует строку, как комментарий, и он полностью проигнорировал оболочки. Единственным исключением является, когда начинается первая строка файла « #!». Это специальная директива, что Unix рассматривает, в частности, и означает, что даже если они используют «csh», «ksh» или что-то другое, как интерактивная оболочка, то, последующей интерпретации Борна.
Точно так же, Perl может начать шить:
#!/usr/bin/perl
Это говорит интерактивной оболочки, что следующая команда должна быть perl. Программирование оболочки Bourne, как правило, исполняют:
#!/bin/sh.
Третья строка выполняет команду «echo» с двумя параметрами, или аргументами: первый - "Hello"; вторая - "Мир". Обратите внимание, что «эхо» автоматически установит пространство между его параметрами. Символ до сих пор отмечает комментария «#», и все остальные за ней игнорируется оболочкой. Тест для проверки сценария
Тест используется практически для каждого написан сценарий оболочки. Когда этот «тест» так не называется напрямую, часто используется символ «[». Он является символической ссылкой слова, для того, чтобы сделать программы оболочки более читаемыми.
Как правило, это означает, что оболочка Bash shell-скриптов будет в главной роли « [»значение «тест», даже если в среде Unix настроен по-разному. Это означает, что «[» на самом деле это программа, как «ls» и другие, поэтому он должен быть окружен пробелами: if [$ foo = "bar"] не работает, так как это интерпретируется как: if test$foo = "bar" ], которая «]» без начала «[».
В этом случае ставятся пробелы вокруг операторов и выделяют обязательные слово «SPACE», заменив его фактическое пространство, в противном случае, если нет места, не работает:
if SPACE [SPACE "$ foo" SPACE = SPACE "бар" SPACE]
Некоторые оболочки принимают «==» для сравнения строк. Для последних лучше использовать один « » или «-eq» для целых чисел.
Как видно, тест простой, но мощный утилита сравнения, которое необходимо для работы в оболочке.
Я, конечно, не будет гуру-Баш в конце прочтения статьи, но они будут более уверенно и вооружены необходимыми знаниями и навыками, чтобы с легкостью выполнять свою работу. Автор: Иван Фролов 11 Ноября 2018 года
Категория: Hi-Tech