Скриптах bash: руководство по созданию


Опубликованно 13.02.2019 08:00

Скриптах bash: руководство по созданию

Скрипты скрипты в bash используются системные администраторы, программисты, сетевые инженеры, ученые, и практически все, кто регулярно пользуется Linux и Unix. Независимо от того, что пользователь делает и что его общий уровень мастерства с компьютером, он может найти подходящий способ, чтобы использовать bash скриптов. Хотя это правильно, они называются shell-скрипты, но большинство программистов называют их Баш скрипты.

В качестве интерактивной оболочки является лаконичным языком для начала и ведения вычислений. Как скриптовый язык-это язык конкретных домен для управления и настройки процессов и файлов. Определение bash-скрипт

Баш скрипты - выполнить языковой оболочки. Он широко доступны в различных операционных системах и анализатор команд по умолчанию в большинстве систем GNU/Линукс. Это аббревиатура от "Bourne раковиной снова".

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

Баш скриптов по умолчанию устанавливается во многих системах GNU/Linux, поэтому скрипт работает даже без определения его в качестве переводчика. Чтобы увидеть, что выполняет команды в регистры по умолчанию:

$ Эхо $оболочку /bin/Баш.

Есть и другие переводчики оболочек, таких как Korn, C, и многие другие. По этой причине, рекомендуется указывать интерпретатор Shell, который будут использовать специально для содержания сценария.

Теперь все скрипты будут включать определение интерпретатор командной строки: #!/бин/Баш.

Более конкретно, это написано в литературе расширенное руководство скриптинг на bash. Имена файлов и разрешения

Чтобы выполнить файл, скрипт должен быть исполняемым выполняется с "командой chmod +x имя". По умолчанию все вновь созданные файлы не выполняются независимо от расширения файла суффикс. В самом деле, последнее свойство в GNU/Linux в принципе не имеет никакого значения.

Когда вы выполните команду "ls", чтобы вывести список всех файлов и каталогов сразу становится понятно, что файл с расширением ".Ш" - это скорее всего скрипт, но ".форматы jpg" станет сжатого изображения. Узнать больше о расширение файла для этого языка можно найти в книгах продвинутый Баш руководство по сценариям.

В командном файле дистрибутива GNU/Linux могут быть использованы для идентификации типа файла. Как видно из следующего примера, расширение файла не имеет смысла, а интерпретатор Shell в данном случае имеет больший вес.

Таким образом, имя скрипта оболочки "0_xyz" вполне допустимо, хотя программисты стараются избегать его. Команда Path оболочки

Когда разработчик вводит команду в шелл, Баш выглядит в некоторых каталогах, чтобы увидеть, если он может найти ее. Поэтому, по словам руководства написании сценариев для интерпретатора bash, если вы типа "ЛС" в оболочке, она будет только выполнять команды, если она на его пути. Операция будет выполнена, если не в одном из каталогов, которые являются частью маршрута. Если есть совпадение в более чем одном из каталогов на пути, он выбирает первое. Можно найти данные, выполнив:

Эхо $ путь.

На экране появится что-то вроде этого:

/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 / местные / Бен, / usr / Бен.

Если пользователь вошел в систему как root, он должен видеть другой набор каталогов, в том числе / usr / местные / sbin в / usr на / sbin.

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

~ / .и bashrc и ~ / .файл.

Например: путь="домашняя$/ОГРН:$путь" .

Вы можете немного изменить правила и установить Advanced скриптах bash. Путь "=" расскажет Баш, что он будет задавать путь и "домой $ / бин" предлагает его добавить в каталог bin, но после "$ путь" призывает его, чтобы добавить все, что уже на маршруте.

Опция ": "разделитель между элементами. Разработчик увидите на экране нечто подобное:

если [ -д "$дома/бин" ] ;

тогда путь="домашняя$/бин:$путь"

интернет.

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

Псевдоним-это линия, где Баш будет заменена другой командой. Простой пример:

псевдоним LS = 'LS с --цвет = авто'.

Она говорит ему, что когда я запускаю "ЛС", нужно запустить "ЛС-цвет = авто", не вводя ничего. Вы можете установить псевдонимов в командной строке, и это хорошо для тестирования.

Это имело бы смысл установить псевдоним в "~ / .bash_profile и ~ / .bashrc следующее". Или создать что-то вроде "~ / .псевдонимы" и вызвать ее из файлов конфигурации следующим образом:

если [ -Ф ~/.bash_aliases ];

затем . ~/.bash_aliases

интернет

Чтобы просмотреть существующие псевдонимы, просто запустите ее в консоли. Он появляется по умолчанию в дистрибутиве. Например, по умолчанию установлен в openSUSE 11.2 без каких-либо изменений.

В качестве теста, вы можете увидеть, что уже установлен в вашем дистрибутиве, и попытаться сделать какие-то свои собственные варианты. Расширение оболочки

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

Например, если вы хотите увидеть все JPEG файлы в папку, запустите "Общ * формат JPG", при условии, что файлы обозначаются как "формат JPG", и Баш будут расширяться, чтобы соответствовать любой файл, имя которого заканчивается на.jpg

Если вы хотите совместить только 1 персонажа, используйте "?". Это указывает на один символ, поэтому "ЛС? .Форматы jpg" будет соответствовать только имена файлов, например "1.jpg" или "a.jpg" не "01.jpg".

Баш также позволяет сопоставить диапазоны символов в квадратных скобках. [Abc12] будет соответствовать одному из символов в расширении. Так, работая "ЛС-ЛГ [abc12] .в JPG", будет относиться к a.jpg, b.jpg, c.jpg, 1.jpg и 2.jpg но не 12.jpg или abc.jpg. Вы можете инвертировать шаблон добавления "взрыва" (!), Например: ЛС-ЛГ [! Почтовый индекс ab12] .jpg будут соответствовать c.jpg или 3.jpg но не 2.jpg и т. д.

Еще одна удобная фишка - расширение кронштейн, когда нужно организовать документы по годам и датам. Если, например, в папку ~ / Документы-это директория с поддиректориями 2010 от 01 до 12, и не хотят печатать от 01 до 12, сделать Баш вместо: команды mkdir 2010 / {01..12}. Когда он читает правило, она распространяет то, что в фигурных скобках, от 01 до 12. Это также работает с письмами, так что если вам нужно от A до Z подкаталогов, вы можете запустить команду mkdir {а..я} и он будет создавать каталоги через Z. Также может работать с заглавными буквами. Сценарий

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

Другой метод сценариев реализация должна явно вызывать его переводчик, например, $ Баш date.sh. Таким образом, скрипт будет работать без необходимости запускать скрипты без исключения, непосредственно в операционной системе, вызывая исполняемый файл bash. Таким образом, содержание date.sh файл будет загружен и интерпретируется как баш скрипт. Относительный и абсолютный путь

До официального программу, скрипт, например, выход из bash-скрипт, нужно определить, что такое навигация, и установить разницу между относительными и абсолютными путь к файлу. Возможно, лучшая аналогия для объяснения относительный и абсолютный путь к файлу для визуализации файловой системы GNU/Linux, как многоэтажный дом.

Корневой каталог - входная дверь здания, назначенные установки, она обеспечивает вход на всю структуру файловой системы"", таким образом, позволяет получить доступ ко всем каталогам - "пол" и "комнаты" - файл - "арендаторов". Например, идите в комнату 1 на 3-м этаже, сначала нужно войти в главную дверь, а затем подняться на 3 этаж (как Level3), а оттуда проникнуть в номер (room1). Следовательно, абсолютный путь к данной комнате на полу внутри здания "/уровне3/room1".

Поэтому, если вы хотите посетить room2 в 3 уровня, первый захват текущего местоположения, который является номером 1, Введение, ".. / ", а затем вставить имя номер "room2 в". Это принимает относительный путь к Номер 2, которая в данном случае "../room2 в". Поскольку в этом примере пользователь уже был на третьем уровне, не нужно покидать дом и заново пройти абсолютный путь через главный вход /уровне3/room2 в.

К счастью, в GNU/Linux имеет простой инструмент нактоуз, который поможет программисту для навигации по файловой системе в виде команды "инвалидов". Эту команду, когда выполняется всегда будет печатать текущее местоположение. Следующий пример будет использовать "CD" и "pwd" команду, чтобы перейти к файловой системе GNU/Linux с помощью абсолютных и относительных путей.

Продолжить.

Выполнить команду "cd" без каких-либо аргументов, чтобы перейти в домашний каталог пользователя из любого места. Как видите, переходов через файловую систему GNU/Linux-это простой и в то же время очень запутанная тема. Понятие переменных

Почти каждый язык программирования имеет понятие переменных - символическое название для части памяти, к которой можно присваивать значения, читать и управлять его содержанием. Например, баш скрипт, "Здравствуй, мир" может быть сделано с помощью переменных. Обратите внимание, что не должно быть пробелов вокруг знака"=": ВАР=стоимости работ; Переменная = значение не работает.

В первом случае оболочка видит символ "=" и лечит команду в качестве переменной. Во втором случае, оболочка предполагает, что VAR должно быть название команды и пытается выполнить его. Введите следующий код в var.sh.

Это присваивает переменной "Привет Мир" переменная MY_MESSAGE. Вам нужно в кавычки строку Привет мир, а переменная может содержать только 1 значение, поэтому строку с пробелами должны быть заключены в кавычки, чтобы оболочка знал, что все это рассматривается как один. В противном случае оболочка будет пытаться выполнить команду мира после присвоения "MY_MESSAGE=Привет".

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

Большинство языков имеют понятие петель, если вы хотите повторить задачу в двадцать раз, вряд ли пользователь захочет ввести код в 20 раз, и даже, наверное, правильно. Для этого существуют "за" и "пока" петли в оболочки Bourne. Он предоставляет несколько меньше возможностей, чем другие языки, но никто не утверждает, что Shell-программированию имеет мощность С. цикл повторяется через заданные значения до тех пор, пока список не будет исчерпан, значения ГГб ‘как njv может быть произвольным. Первый сценарий

Для первого скрипта, вы можете просто написать скрипт, который говорит "Привет Мир". Создайте файл (first.sh) следующим образом: first.sh первая строка говорит, что в Unix файл должен быть запущен / Бен / ш. Это стандартное расположение оболочки для почти каждой системы Unix.

Если вы используете ОС Linux bash-скрипт, затем ГНУ/Линукс / Бен / ш обычно символическая ссылка на баш, или недавно была нанесена черточка. Вторая строка начинается со специального символа " #". Это помечает строку как комментарий и полностью игнорируется оболочки. Единственное исключение-когда начинается первая строка файла " #!". Это специальная директива, Unix и считает себя, и означает, что даже если вы используете "хсг", "КШ" или что-то другое, как интерактивная оболочка, ее дальнейшей интерпретации Борна.

Аналогично, Perl может начать шить:

#!/usr/Бен/Perl с

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

#!/Бен/ш.

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

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

Это обычно означает, что оболочкой является bash shell-скрипт будет интерпретироваться " ["как значение "тест", даже если Unix является настроены по-разному. Это означает, что "[" на самом деле эта программа, как "ls" и другие, поэтому он должен быть окружен пробелами: если [не$ Foo = "бар"] будет работать не так, как это интерпретируется, как если бы тест не$Foo = "Бар" ], которая "]" без начала "[".

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

если пространство [пространство "$ фу", пробел = пробел пробел]

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

Как видно, тест-это простая, но мощная утилита для сравнения, которые необходимы для работы в оболочке.

Конечно, все станут гуру-Баш в конце прочтения статьи, но будет более уверенным и вооружены необходимыми знаниями и навыками, чтобы быстро выполнить свою работу. Автор: Иван Фролов 11 ноября 2018



Категория: Гаджеты