User Tools

Site Tools


bash:создание_первого_сценария_командной_оболочки

bash: first script

Что такое сценарии командной оболочки

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

Как написать сценарий командной оболочки

Чтобы успешно создать и запустить сценарий командной оболочки, нужно:

  1. Написать сценарий. Сценарии командной оболочки — это обычные текстовые файлы. Поэтому для их создания нам понадобится текстовый редактор. Лучше использовать текстовый редактор, обладающий функцией подсветки синтаксиса, позволяющей видеть элементы сценариев с цветной маркировкой. Подсветка синтаксиса помогает замечать некоторые типичные ошибки. Для создания сценариев хорошо подходят vim, gedit, kate и многие другие редакторы.
  2. Сделать сценарий выполняемым. Система не позволяет интерпретировать любой старый текстовый файл как программу, и небезосновательно! Поэтому, чтобы выполнить сценарий, файлу сценария нужно дать разрешения на выполнение
  3. Поместить сценарий в каталог, где командная оболочка сможет найти его. Командная оболочка автоматически ищет выполняемые файлы в нескольких каталогах, если путь к файлу не указан явно. Для максимального удобства мы будем помещать наши сценарии в такие каталоги.

Формат файла сценария

Следуя традициям программирования, напишем программу hello world, чтобы продемонстрировать чрезвычайно простой сценарий. Итак, запустите текстовый редактор и введите следующий сценарий:

#!/bin/bash
# Это наш первый сценарий.
echo 'Hello World!'

Первая строка в сценарии смотрится несколько необычно. Она похожа на комментарий, потому что начинается с символа <html>#</html>, но выглядит какой-то уж слишком специальной, чтобы быть комментарием. Последовательность символов <html>#!</html> — это на самом деле специальная конструкция, которая называется shebang (произносится как «шебанг») и сообщает системе имя интерпретатора, который должен использоваться для выполнения следующего за ним текста сценария. Каждый сценарий командной оболочки должен включать это определение в первой строке.

Сохраните файл сценария с именем <html>hello_world</html>.

Разрешения на выполнение

Далее сделаем сценарий исполняемым при помощи команды chmod:

ls -l hello_world
-rw-r--r-- 1 nevvad nevvad 79 Jun 19 22:51 hello_world
 
chmod 755 hello_world
 
ls -l hello_world
-rwxr-xr-x 1 nevvad nevvad 79 Jun 19 22:51 hello_world

Существует два распространенных набора разрешений для сценариев: 755 — для сценариев, которые должны быть доступны для выполнения всем, и 700 — для сценариев, которые могут выполняться только владельцами. Обратите внимание, что сценарии необходимо сделать доступными для чтения, чтобы их можно было выполнить.

Местоположение файла сценария

После установки разрешений попробуем запустить сценарий:

./hello_world
Hello World!

Но чтобы это сделать, необходимо добавить явный путь перед его именем. В противном случае мы получим следующее сообщение:

hello_world
hello_world: command not found

В чем причина? Чем наш сценарий отличается от других программ? Как оказывается, ничем. У нас замечательный сценарий. Его проблема – местоположение.

Коротко напомним, что система просматривает каталоги по списку всякий раз, когда требуется найти исполняемую программу, если путь к ней не указан явно. Именно так система выполняет программу <html>/bin/ls</html>, если мы вводим ls в командной строке. Каталог <html>/bin</html> – один из каталогов, которые система просматривает автоматически. Список каталогов хранится в переменной окружения PATH. Она содержит список каталогов, перечисленных через двоеточие. Увидеть, что содержится в PATH, можно с помощью команды:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Как видите, это просто список каталогов. Если поместить сценарий в любой из этих каталогов, проблема будет решена.

В большинстве дистрибутивов Linux в переменную PATH включается каталог <html>bin</html> в домашнем каталоге пользователя, чтобы дать пользователям возможность выполнять собственные программы. То есть если создать каталог </html>bin</html> и поместить сценарий в него, его можно будет запускать как любые другие программы:

mkdir bin
mv hello_world /bin
mv hello_world bin/

Если каталог отсутствует в переменной PATH, его легко туда добавить, включив следующую строку в файл <html>.bashrc</html>:

export PATH=~/bin:"$PATH"

Это изменение будет действовать в каждом последующем сеансе работы с терминалом. Чтобы применить изменения в текущем сеансе, нужно заставить командную оболочку повторно прочитать файл <html>.bashrc</html>, например, так:

. .bashrc

Команда «точка» <html>.</html> является синонимом <html>source</html>, встроенной команды, которая читает указанный файл и интерпретирует его как ввод с клавиатуры.

Настройка vim для разработки сценариев

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

:syntax on

Включает подсветку синтаксиса. С этой настройкой редактор будет отображать синтаксические элементы сценариев разным цветом. Это помогает выявлять некоторые виды ошибок. И конечно же, выглядит очень круто. Обратите внимание, что для работы этой настройки должна быть установлена полная версия vim, а редактируемый файл должен содержать строку шебанг (shebang), сообщающую, что файл является сценарием командной оболочки. Если с этой командой возникнут сложности, попробуйте настройку <html>:set syntax=sh</html>.

Следующая команда:

:set hlsearch

Включает подсветку результатов поиска. Например, если выполнить поиск слова echo с этой настройкой, редактор выделит все вхождения искомого слова.

Следующая команда:

:set tabstop=4

Определяет число колонок (знакомест), занимаемых символом табуляции. По умолчанию один символ табуляции занимает восемь знакомест. Присвоив этому параметру значение 4 (которое широко используется практикующими программистами), вам проще будет уместить длинные строки на экране.

Следующая команда:

:set autoindent

Включает автоматическое оформление отступов. Этот параметр заставляет vim добавлять в новую строку отступ, как в строке выше. Это ускоряет ввод многих видов программных конструкций. Чтобы прекратить автоматическое выравнивание, достаточно нажать комбинацию CTRL+D.

Эти изменения можно сделать постоянными, добавив описанные команды (без начального двоеточия) в файл <html>~/.vimrc</html>.

Выбор местоположения для сценариев

Каталог <html>~/bin</html> хорошо подходит для сценария, если этот сценарий предназначен для личного использования. Сценарии, которые должны быть доступны всем пользователям в системе, лучше размещать в традиционном месте – в каталоге <html>/usr/local/bin</html>.

Сценарии, предназначенные для использования системным администратором, часто помещаются в каталог <html>/usr/local/sbin</html>. В большинстве случаев программное обеспечение, созданное в локальной системе, будь то сценарии или скомпилированные программы, следует помещать в иерархию каталогов <html>/usr/local</html>, а не <html>/bin</html> или <html>/usr/bin</html>. Последние два каталога, как определено стандартом иерархии файловой системы Linux (Linux Filesystem Hierarchy Standard), предназначены только для файлов, поставляемых создателями дистрибутива Linux.

bash/создание_первого_сценария_командной_оболочки.txt · Last modified: 2023/04/06 10:18 (external edit)