В Интернете есть множество руководств, в которых показано, как создавать сценарии Shell с использованием BASH, и это руководство направлено на то, чтобы дать немного другой оборот, потому что он написан кем-то, у которого очень мало навыков работы с оболочкой.
Теперь вы можете подумать, что это глупая идея, но я нахожу, что некоторые гиды говорят с вами, как будто вы уже являетесь экспертом, а другие гиды слишком долго занимаются преследованием.
Хотя мой опыт работы с оболочкой LINUX / UNIX ограничен, я являюсь разработчиком программного обеспечения по профессии, и я являюсь лаконичной рукой на языках сценариев, таких как PERL, PHP и VBScript.
Суть этого руководства состоит в том, что вы узнаете, как я узнаю, и любую информацию, которую я заберу, я передам вам.
Начиная
Очевидно, есть много теории, что я мог бы сразу перейти к вам, например, описать различные типы оболочек и преимущества использования BASH над KSH и CSH.
Большинство людей, изучая что-то новое, хотят вскочить и начать с некоторых практических занятий сначала, и с учетом этого я не собираюсь утомлять вас пустяками, которые сейчас не важны.
Все, что вам нужно для этого руководства, - это текстовый редактор и терминал, на котором работает BASH (оболочка по умолчанию для большинства дистрибутивов Linux).
Текстовые редакторы
Другие руководства, которые я прочитал, предположили, что вам нужен текстовый редактор, который включает цветовое кодирование команд, а рекомендуемые редакторы - VIM или EMACS.
Цветовое кодирование хорошо, поскольку оно выделяет команды по мере их ввода, но для абсолютного новичка вы можете потратить первые несколько недель на изучение VIM и EMACS без написания одной строки кода.
Из двух я предпочитаю EMACS, но, честно говоря, я предпочитаю использовать простой редактор, такой как nano, gedit или leafpad.
Если вы пишете скрипты на своем собственном компьютере, и знаете, что у вас всегда будет доступ к графической среде, тогда вы можете выбрать редактор, который лучше всего подходит для вас, и он может быть графическим, например, GEdit или редактором, который работает прямо в терминале таких как нано или vim.
Для целей настоящего руководства я буду использовать nano, поскольку он установлен изначально для большинства дистрибутивов Linux, и поэтому вы, вероятно, получите к нему доступ.
Открытие окна терминала
Если вы используете дистрибутив Linux с графическим рабочим столом, например Linux Mint или Ubuntu, вы можете открыть окно терминала, нажав CTRL + ALT + T.
Где разместить ваши скрипты
Для целей данного руководства вы можете поместить свои скрипты в папку под домашней папкой.
В окне терминала убедитесь, что вы находитесь в своей домашней папке, введя следующую команду:
cd ~
Команда cd означает каталог изменений, а тильда (~) - это ярлык для вашей домашней папки.
Вы можете проверить, что вы находитесь в правильном месте, введя следующую команду:
PWD
Команда pwd сообщит вам ваш текущий рабочий каталог (где вы находитесь в дереве каталогов). В моем случае он вернулся / home / gary.
Теперь, очевидно, вы не захотите напрямую поместить свои скрипты в домашнюю папку, чтобы создать папку под названием scripts, введя следующую команду.
Скрипты mkdir
Перейдите в новую папку сценариев, введя следующую команду:
Ваш первый скрипт
Обычно, когда вы учитесь программировать, чтобы первая программа просто выводила слова «Hello World».
Внутри папки сценариев введите следующую команду:
nano helloworld.sh
Теперь введите следующий код в нано-окно.
#! / bin / bash echo "hello world"
Нажмите CTRL + O, чтобы сохранить файл и CTRL + X, чтобы выйти из nano.
Сам скрипт состоит из следующего:
#! / Bin / bash необходимо включить в начало всех скриптов, которые вы пишете, поскольку интерпретаторы и операционная система знают, как обрабатывать файл. В основном просто не забудьте включить его и забыть о том, почему вы это делаете.
Во второй строке есть одна команда, называемая echo, которая выводит текст, который сразу же следует за ней.
Обратите внимание: если вы хотите отобразить несколько слов, вам нужно использовать двойные кавычки («) вокруг слов.
Теперь вы можете запустить скрипт, введя следующую команду:
sh helloworld.sh
Должны появиться слова «привет мир».
Другой способ запуска скриптов:
./helloworld.sh
Скорее всего, если вы сразу же запустите эту команду в своем терминале, вы получите ошибку разрешений.
Чтобы предоставить разрешения для запуска сценария таким образом, введите следующее:
sudo chmod + x helloworld.sh
Так что же на самом деле произошло? Почему вы смогли запустить sh helloworld.sh без изменения разрешений, но запуск ./helloworld.sh вызвал проблему?
Первый метод загружает интерпретатор bash, который принимает helloworld.sh в качестве входных данных и разрабатывает, что с ним делать. У интерпретатора bash уже есть разрешения для запуска и просто нужно запускать команды в скрипте.
Второй метод позволяет операционной системе решить, что делать со сценарием, и поэтому для выполнения требуется исполняемый бит.
Вышеприведенный скрипт был в порядке, но что произойдет, если вы хотите отображать кавычки?
Существуют различные способы достижения этого. Например, вы можете поместить обратную косую черту перед кавычками следующим образом:
echo "привет мир "
Это приведет к выходу «hello world».
Подождите минуту, что, если вы хотите отобразить «привет мир»?
Ну, вы также можете избежать escape-символов
echo "" привет мир ""
Это приведет к выдаче «привет мир».
Теперь я знаю, о чем вы думаете. Но я действительно хочу отобразить "" привет мир ""
Использование эха со всеми этими escape-символами может стать довольно глупым. Существует альтернативная команда, которую вы можете использовать под названием printf.
Например:
printf '% s n' ' "" hello world ""'
Обратите внимание, что текст, который мы хотим отобразить, находится между одинарными кавычками. Команда printf выводит текст из вашего скрипта. % S означает, что он отобразит строку, n выведет новую строку.
Резюме
В первой части мы не очень многое рассмотрели, но, надеюсь, у вас работает ваш первый скрипт.
В следующей части мы рассмотрим улучшение на hello world script, чтобы отображать текст в разных цветах, принимать и обрабатывать входные параметры, переменные и комментировать ваш код.