Сделайте первый шаг к созданию сценариев оболочки. Узнайте, что нужно для создания простого bash-скрипта и как его запустить.
Если вам нужно сделать это более одного раза, автоматизируйте это!
Вы часто будете повторять одну и ту же задачу в Linux снова и снова. Это может быть простая резервная копия каталога, очистка временных файлов или даже клонирование базы данных.
Автоматизация задачи – один из многих полезных сценариев, в которых вы можете использовать возможности сценариев bash.
Позвольте нам показать вам, как создать простой скрипт оболочки bash, как запустить скрипт bash и что вы должны знать о сценариях оболочки.
Создайте и запустите свой первый скрипт оболочки
Давайте сначала создадим новый каталог с именем scripts, который будет содержать все наши скрипты bash.
mkdir scripts cd scripts
Теперь внутри этого «каталога скриптов» создайте новый файл с именем hello.sh с помощью команды cat:
cat > hello.sh
Вставьте в него следующую строку, набрав ее в терминале:
echo 'Hello, World!'
Нажмите Ctrl + D, чтобы сохранить текст в файл и выйти из команды cat.
Вы также можете использовать текстовый редактор на основе терминала, такой как Vim, Emacs или Nano. Если вы используете настольный Linux, вы также можете использовать графический текстовый редактор, такой как Gedit, чтобы добавить текст в этот файл.
Итак, в основном вы используете команду echo для вывода «Hello World». Вы можете использовать эту команду непосредственно в терминале, но в этом тесте вы запустите эту команду через скрипт оболочки.
Теперь сделайте файл hello.sh исполняемым с помощью команды chmod следующим образом:
chmod u+x hello.sh
И наконец, запустите ваш первый скрипт оболочки, добавив hello.sh желаемую оболочку «bash»:
bash hello.sh
Вы увидите Hello, World!, напечатанные на экране. Возможно, это была самая легкая программа Hello World, которую вы когда-либо писали, верно?
Конвертируйте ваш скрипт в bash
Bash означает “Bourne-Again shell”, – это всего лишь одна из многих доступных оболочек в Linux.
Оболочка – это интерпретатор командной строки, который принимает и запускает команды. Если вы когда-либо запускали какую-либо команду Linux раньше, то вы использовали оболочку. Когда вы открываете терминал в Linux, вы уже используете оболочку по умолчанию вашей системы.
Bash часто является оболочкой по умолчанию в большинстве дистрибутивов Linux. Вот почему bash часто является синонимом оболочки.
Сценарии оболочки часто имеют почти одинаковые синтаксисы, но иногда они также различаются. Например, индекс массива начинается с 1 в Zsh вместо 0 в bash. Скрипт, написанный для оболочки Zsh , не будет работать так же в bash, если у него есть массивы.
Чтобы избежать неприятных сюрпризов, вы должны сообщить интерпретатору, что ваш сценарий оболочки написан для оболочки bash.
Строка SheBang в начале сценария оболочки
Строка «#!/Bin/bash» называется строкой shebang, а в некоторых литературах она называется строкой hashbang, и это потому, что она начинается с двух символов хеша «#» и bang «!».
#! /bin/bash echo 'Hello, World!'
Когда вы добавляете строку «#!/Bin/bash» в самом верху вашего скрипта, система знает, что вы хотите использовать bash в качестве интерпретатора для вашего скрипта. Таким образом, вы можете запустить скрипт hello.sh прямо сейчас, не добавляя ему bash.
Добавление сценария оболочки в PATH (чтобы его можно было запустить из любого каталога)
Возможно, вы заметили, что мы использовали ./hello.sh для запуска скрипта; вы получите ошибку, если пропустите ведущий ./
destroyer@andreyex:~/scripts$ hello.sh hello.sh: command not found
Bash подумал, что вы пытаетесь запустить команду с именем hello.sh. Когда вы запускаете любую команду на вашем терминале; он ищет эту команду в наборе каталогов, которые хранятся в переменной PATH.
Вы можете использовать echo для просмотра содержимого этой переменной PATH:
echo $PATH /home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Символ двоеточия (:) разделяет путь каждого из каталогов, которые сканирует ваша оболочка при каждом запуске команды.
Команды Linux, такие как echo, cat и т. д., можно запускать откуда угодно, потому что их исполняемые файлы хранятся в каталогах bin. Каталоги bin включены в PATH. Когда вы запускаете команду, ваша система проверяет PATH на все возможные места, которые она должна искать, чтобы найти исполняемый файл для этой команды.
Если вы хотите запустить свой bash-скрипт из любой точки мира, как если бы это была обычная команда Linux, добавьте местоположение вашего сценария оболочки в переменную PATH.
Во-первых, найдите местоположение каталога вашего скрипта (если вы находитесь в том же каталоге), используйте команду PWD:
pwd
Используйте команду export, чтобы добавить каталог скриптов в переменную PATH.
export PATH=$PATH:/home/user/scripts
Момент истины здесь, запустите hello.sh:
destroyer@andreyex:~/scripts$ hello.sh Hello, World!
Он работает! Это подводит нас к концу этой статьи. Мы надеемся, что теперь у вас есть некоторое представление о сценариях оболочки.