Вступление
Данное руководство рассказывает о том, как написать скрипт оболочки для самых различных целей. Скрипт оболочки можно использовать для запуска нескольких команд, одной команды со сложными и разносторонними аргументами, а также для запуска более удобных интерфейсов для разработки проектов. По сути, это упрощает работу за счет автоматизации тех частей, которые обычно выполняются вручную.
Создание папки
Прежде чем начать писать скрипт, нужно назначить для него папку. Личные скрипты рекомендуется хранить в папке ~/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. Они очень удобны, а их возможности невероятно высоки.