Что такое сценарии оболочки и почему вы должны его использовать

Что такое сценарии оболочки и почему вы должны его использовать

Оболочка - это программа в операционной системе Linux или Unix, которая позволяет вводить команды для выполнения системой. Когда окно терминала открывается на компьютере с Linux, оно запускает программу оболочки, которая представляет собой интерфейс для ввода команд. Этот интерфейс известен как интерфейс командной строки. Когда команда вводится, она выполняется оболочкой, и вывод отображается на экране.





Помимо возможности принимать и выполнять команды в интерактивном режиме, оболочка также может выполнять команды, хранящиеся в файле. Этот способ выполнения известен как сценарии оболочки , и в этой статье мы рассмотрим основы написания сценариев оболочки.





1. История оболочки

Начиная с Unix в 1970-х годах, существовала программа оболочки под названием V6 Shell разработан Кеном Томсоном. Это была интерактивная оболочка, в которой не было возможности писать сценарии.





Затем последовал Bourne Shell в 1977 году и по-прежнему используется в качестве оболочки по умолчанию для корень учетная запись. В эту оболочку добавлены возможности написания сценариев, которые на протяжении многих лет оказались чрезвычайно полезными на практике.

Дальнейшее развитие оболочки в 1980-х годах привело к появлению многих популярных вариантов оболочки, наиболее популярными из которых были C-Shell и Корн Шелл . Каждая из этих оболочек имела свой собственный синтаксис, который в некоторых случаях радикально отличался от исходной оболочки.



Одна из самых популярных на сегодняшний день снарядов - это Баш Шелл . Баш означает Bourne-Again-Shell и представляет собой значительно улучшенный вариант оригинальной Bourne Shell.

как получить интернет на ноутбуке где угодно

В этой статье мы описываем сценарии оболочки для оболочка Bash .





2. Выполнение сценария оболочки

Как выполнить сценарий оболочки? Простой. Просто передайте путь к сценарию в качестве аргумента оболочки:

Пример сценария оболочки:





echo 'hello world'

Запустите его следующим образом:

$ bash hello.sh
# prints
hello world

Примечание: Оболочка требует, чтобы строки заканчивались символами LF (перевод строки). Если вы напишете сценарий оболочки в Windows и попытаетесь выполнить его непосредственно в системе Linux, вы можете столкнуться с ошибками. Windows использует комбинацию CR-LF (возврат каретки-перевод строки) для завершения строки. Его нужно преобразовать только в LF. Проверьте свой редактор Windows, чтобы узнать, как это сделать.

Есть еще один способ выполнить сценарий оболочки непосредственно как команду. Вставьте следующую строку ( хэшбэнг декларацию) в качестве первой строки вашего сценария оболочки.

как получить plex pass бесплатно
#!/bin/bash

С этим изменением наш простой сценарий оболочки теперь:

#!/bin/bash
echo 'hello world'

Теперь вам нужно сделать исполняемый файл скрипта следующим образом:

$ chmod +x hello.sh

На этом этапе вы можете выполнить файл сценария напрямую, без явной ссылки на оболочку.

$ hello.sh
# prints
hello world

Давайте теперь посмотрим на некоторые преимущества использования сценариев оболочки.

3. Автоматизация задач

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

  • Архивируйте и загружайте файл или папку каждый день в облачное хранилище например S3.
  • Сжимайте файлы журналов, размер которых увеличивается каждый день.
  • Получение цен на акции, анализ полученных данных и отправка электронного письма или SMS при выполнении определенных условий (слишком высокие или слишком низкие цены).

4. Объединение нескольких команд

Помимо автоматизации часто выполняемых задач, вы также можете найти полезным объединение нескольких последовательностей команд в одну команду. Запоминать одну команду намного проще, чем несколько команд, не говоря уже о порядке, в котором они должны выполняться.

Примером может служить последовательность загрузки самой операционной системы Linux. В рамках загрузки ОС выполняет ряд команд, чтобы привести систему в надлежащее состояние. Эти команды на самом деле являются сценариями оболочки, которые находятся под /так далее каталог. Если вы посмотрите на один из этих сценариев оболочки, вы поймете сложность загрузки системы, которую вам, возможно, пришлось бы выполнить вручную в отсутствие сценариев оболочки.

Ниже приведен пример сценария оболочки. / etc / profile , который выполняется каждый раз, когда пользователь входит в систему. Представьте, что вы вводите эти команды вручную!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Легче развиваться

Можно выполнять те же действия, что и сценарий оболочки, внутри обычной программы, написанной на C / C ++. Однако написать и отладить сценарий оболочки намного проще, чем программу C / C ++. Специально для задач системного администрирования, которые включают выполнение внешних команд, создание и удаление файлов и каталогов, перенаправление вывода и т. Д.

Программы C / C ++ лучше подходят для гораздо более низкого уровня операций, таких как вызов системных вызовов, манипулирование структурами данных и т. Д.

6. Прозрачность

Сценарий оболочки, поскольку он является текстовым файлом, можно легко просмотреть, чтобы узнать, какие действия он выполняет. Напротив, единственный способ узнать, что делает программа, написанная на таком языке, как C / C ++ (и скомпилированная в исполняемый файл), - это сообщить вам об этом или у вас есть доступ к исходному коду. Например, вы можете проверить, удаляет ли сценарий оболочки какие-либо файлы, и, если вам нужны эти файлы, вы можете скопировать их в другое место.

Также гораздо проще диагностировать проблемы с помощью сценариев оболочки, чем с помощью обычных программ, поскольку вы можете посмотреть исходный код. Этот сценарий не работает, потому что каталог не существует? Вы можете заглянуть в код сценария и создать каталог (хотя сценарий оболочки с хорошим поведением должен проверять и создавать его, чтобы избежать таких ошибок).

7. Портативный

К сценарий оболочки может быть перенесен в другие Unix и Unix-подобные операционные системы и выполнен (если присутствует сама оболочка). Даже при переносе сценария оболочки с разных архитектур, таких как x86, MIPS, Sparc и т. Д., Сценарии оболочки намного более переносимы, чем программы на C / C ++.

Единственный способ переноса и использования программы C / C ++ в другой системе - это скопировать исходный код, построить программу и попытаться запустить ее. Даже в этом случае он может работать не так, как ожидалось, если он использует архитектурно-зависимый код.

Теперь, когда вы знаете, что такое сценарии оболочки и их многочисленные преимущества, не хотели бы вы использовать их для своих задач? С какими проблемами вы столкнулись при их использовании? Пожалуйста, дайте нам знать в комментариях ниже.

защитная пленка для экрана iphone 11 pro
Делиться Делиться Твитнуть Эл. адрес 5 советов, как зарядить ваши машины VirtualBox Linux

Устали от низкой производительности виртуальных машин? Вот что вам нужно сделать, чтобы повысить производительность VirtualBox.

Читать далее
Похожие темы
  • Программирование
  • Оболочка Linux Bash
Об авторе Джей Шридхар(Опубликовано 17 статей) Ещё от Jay Sridhar

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться