Site icon 8HOST.COM

Написание простого скрипта оболочки на VPS

Вступление

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

Создание папки

Прежде чем начать писать скрипт, нужно назначить для него папку. Личные скрипты рекомендуется хранить в папке ~/bin. Чтобы создать эту папку, запустите:

mkdir ~/bin

Чтобы скрипты запускались из любой точки системы, отредактируйте /etc/profile, запустив:

sudo nano /etc/profile

Затем внесите в файл следующие строки:

PATH=$PATH:$HOME/bin
export PATH

Не забудьте также использовать сочетание клавиш CTRL+O, чтоб сохранить, и CTRL+X, чтобы выйти. Чтобы изменения вступили в силу, введите:

source /etc/profile

Если данный дистрибутив Linux не поддерживает команды source, VPS  можно перезагрузить, введя:

sudo reboot

Создание файла

Для начала нужно создать исполняемый файл скрипта. Это можно сделать, просто введя

touch ~/bin/firstscript
chmod +x ~/bin/firstscript

Откройте текстовый редактор nano, чтобы добавить команды:

nano ~/bin/firstscript

Для того, чтобы загрузчик программ распознал этот исполняемый файл как скрипт оболочки и запустил команды из правильного каталога, нужно добавить следующую строку в верхнюю часть файла:

#!/bin/sh

Теперь можно добавить любую необходимую команду Linux, например:

clear
echo “Hello World!”

Сохранившись (CTRL+O) и выйдя из nano (CTRL+X), просто введите следующую строку, чтобы запустить скрипт из любой точки системы:

firstscript

Пример скрипта

Одной из целей скрипта оболочки является создание ярлыка для повторяющихся задач. К примеру, если пользователь постоянно перемещает большое количество файлов в папку ~/backup, можно установить скрипт, который будет перемещать все указанные файлы автоматически. Он будет работать примерно так:

filebackup file-name1 file-name2...

Прежде чем начать кодировать, взгляните на то, чему нужно научиться. Хорошо написанные скрипты оболочки не закодированы жёстко. В данном случае это значит, что при необходимости изменить папку для резервного копирования можно просто изменить одну из первых строк скрипта. Хотя переменная, относящаяся к ней, будет ссылаться всего один раз, но этому важно научиться сейчас. Чтобы протестировать это, не нужно переходить в текстовый редактор, просто откройте командную строку, введя:

testvariable=teststring

Команда «echo» возвращает текст. Введите:

echo $testvariable

Можно увидеть установленное ему значение, в данном случае это «teststring». Теперь можно приступить к обычному кодированию.

touch ~/bin/filebackup
chmod +x ~/bin/filebackup
nano ~/bin/filebackup

Запомните, каждая строка должна начинаться с символа комментария – #. Он  никак не повлияет на программу, кроме тех случаев, когда за ним следует восклицательный знак в первой строке программы, который превращается в «shebang», как уже говорилось во время описания строки «“#!/bin/sh». Вот как может выглядеть скрипт:

#!/bin/sh
#Backup script
#Description: makes a copy of any given file at the backup folder
#Author: Your Name
#Date: 8/10/2013
#Backup folder; set this variable to any folder you have write permissions on
BACKUPFOLDER=~/backup
#The script will make sure the folder exists
mkdir -p $BACKUPFOLDER
#Now the script will copy the given file to the folder
cp -a $@ $BACKUPFOLDER

Теперь нужно сохраниться и выйти, а затем просмотреть код. Первые несколько строк закомментированы. Переменная «backupfolder» указывает на локацию для хранения резервных копий. Перейдите к строке «mkdir -p $BACKUPFOLDER». Данная строка создает папку, но не выдает никаких ошибок, если такая папка уже существует. На следующую команду, «cp»,  помещены все аргументы, идущие перед вызовом скрипта с «$@». Аргументы в данном контексте – это все имена файлов, размещенные после скрипта, которые нужно копировать. Сразу после этого указана папка назначения, в данном случае «$ BACKUPFOLDER».  Теперь можете протестировать работу скрипта в системе, при помощи пары файлов и следующей строки:

filebackup file1 file2

В данную строку можно внести необходимое количество файлов, и все они будут скопированы в папку «backup».

Итоги

Это руководство охватывает только основы работы со скриптами. Скрипты оболочки не просто так широко используются в системах Linux. Они очень удобны, а их возможности невероятно высоки.