Что такое Bash-скрипты и почему их следует использовать?

Если вы упомянете о bash-сценариях в разговоре с любым техническим администратором или разработчиком, вас встретят одобрительными кивками или возгласами "Было такое, было и такое". Причина в том, что сценарии bash - это невероятно удобный инструмент, который помогает сделать операционную систему Linux гибкой, мощной и полезной для разработки ПО.<\/p>\r\n\r\n

Но что такое bash-скрипты и зачем их использовать?
\r\nЭти вопросы часто задают, и на них легко ответить. Но прежде чем услышать объяснение, вам, вероятно, следует сначала узнать, что такое bash. В конце концов, вы, вероятно, уже знаете, что такое скрипт, так что складывать два и два нужно начинать с самого терминала.<\/p>\r\n\r\n

Что такое Bash?<\/h2>\r\n\r\n

Проще говоря, bash - это оболочка и командный язык, используемый в Linux. Хорошо, это замечательно, но что такое оболочка? В Linux оболочка - это интерпретатор командной строки, который предоставляет пользовательский интерфейс для выполнения команд. Без оболочки вы не сможете выполнять команды. Без команд не было бы операционной системы. Без операционной системы не было бы и ПК.
\r\nИтак, bash - это тип оболочки, позволяющий выполнять команды в Linux.
\r\nНо какое отношение это имеет к вашей команде разработчиков?
\r\nДва слова: Сценарии оболочки.<\/p>\r\n\r\n

<\/p>\r\n\r\n

Что такое сценарии оболочки?<\/h2>\r\n\r\n

Теперь мы подошли к сути вопроса. Сценарий оболочки - это компьютерная программа, предназначенная для выполнения внутри оболочки (в данном случае bash). Каждая оболочка имеет свой собственный язык сценариев, и поскольку bash является оболочкой по умолчанию в Linux, большинство команд разработчиков и администраторов используют язык сценариев bash.
\r\nС помощью этих скриптов можно сделать практически все. Как и Python, они довольно просты в изучении и не требуют компилятора.
\r\nДля того чтобы понять, что такое shell-сценарии, необходимо сначала разобраться с тем, как использовать командную строку в Linux. Давайте рассмотрим очень простой пример. Допустим, вы хотите распечатать следующую фразу:<\/p>\r\n\r\n

\r\n

The date and time is <\/p>\r\n<\/blockquote>\r\n\r\n

После этого необходимо вывести фактическую дату и время, используя команду date. Это можно сделать следующим образом:<\/p>\r\n\r\n

\r\n

echo "The date and time is " $(date)<\/p>\r\n<\/blockquote>\r\n\r\n

Нажимаем Enter, и в результате получаем примерно следующее:<\/p>\r\n\r\n

\r\n

The date and time is Wed Jan 19 09:04:16 AM EST 2023<\/p>\r\n<\/blockquote>\r\n\r\n

Сейчас мы рассмотрим, как это делается с помощью сценария bash.<\/p>\r\n\r\n

Как создать сценарий Bash<\/h2>\r\n\r\n

Первое, что вы должны знать, - это то, что каждый сценарий bash начинается с:<\/p>\r\n\r\n

\r\n

#!\/bin\/bash<\/p>\r\n<\/blockquote>\r\n\r\n

Создайте новый файл командой:<\/p>\r\n\r\n

\r\n

nano date.sh<\/p>\r\n<\/blockquote>\r\n\r\n

Добавьте в начало скрипта #!\/bin\/bash, который указывает терминалу, что все, что находится в файле, является частью скрипта. После этого мы можем создать нашу программу всего из нескольких строк. Первое, что мы сделаем, это отформатируем дату так, как нам нравится, используя переменную следующим образом:<\/p>\r\n\r\n

\r\n

formatted_date=$(date +%m_%d_%y-%H.%M.%S)<\/p>\r\n<\/blockquote>\r\n\r\n

Вышеописанное выведет дату в формате числа (месяц, день, год), а затем времени (час, минуты, секунды). Мы будем использовать эту переменную (formatted_date) совместно с нашей командой echo в строке:<\/p>\r\n\r\n

\r\n

echo "The date and time is " $formatted_date<\/p>\r\n<\/blockquote>\r\n\r\n

Сохраните и закройте файл и дайте скрипту права на выполнение:<\/p>\r\n\r\n

\r\n

chmod u+x date.sh<\/p>\r\n<\/blockquote>\r\n\r\n

Если запустить команду .\/date.sh, то результат будет выглядеть так же, как при выполнении команды echo из окна терминала.
\r\nВот так и создается сценарий bash.<\/p>\r\n\r\n

Зачем нужны сценарии Bash<\/h2>\r\n\r\n

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