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

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

Примечание: Предполагается, что вы ознакомились с первым руководством из этой серии.

Команда echo

Команда echo позволяет отображать данные пользователя (простые текстовые строки, переменные). У этой команды есть два параметра:

  • Флаг –n подавляет символ новой строки.
  • Флаг –е включает следующий набор данных внутри строки:

\a   - сигнал тревоги
\b   - знак возврата на одну позицию
\c   - подавление символа новой строки в конце (аналогично флагу –n)
\e   - знак перехода
\n   - новая строка
\r   - возврат каретки
\t   - горизонтальная табуляция
\0xx – ASCII-символ
\\   - обратная косая

К примеру, эти две команды работают идентично:

echo -e "Text\c"
echo -n "Text"

Чтобы отобразить переменные при помощи команды echo, просто напишите их в строку, поставив перед этим символ $:

string=World!
echo "Hello $string"

Эта команда позволяет комбинировать текстовые строки с переменными и командами в одну строку. Кроме того, можно даже поместить несколько строк текста в одну строку кода, добавив команду \n перед новой строкой.

Форматирование текста при помощи echo

Команда echo позволяет отображать цветной и отформатированный текст. Имейте в виду: не все функции echo одинаково работают в разных терминальных клиентах, потому результаты скрипта могут отличаться в зависимости от терминала. Но поскольку это просто визуальные изменения текста, не играющие большой роли, в большинстве случаев на эти различия не обращают внимания. Все настройки текста (полужирный шрифт, курсив, цветной текст) определяются ESC-последовательностями (кодом, идущим после знака перехода \е):

echo -e "This is \e[1mBold"

Наиболее часто встречаются такие коды:

Полужирный шрифт:\e[1m
Размер:             \e[2m
Подчёркивание:      \e[4m
Обратить цвета: \e[7m

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

echo -e "\e[4mThis \e[1mis\e[0m \e[7man example \e[0mstring"

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

Чёрный:         \e[30m (текст) \e[40m (фон)
Красный:           \e[31m (текст) \e[41m (фон)
Зелёный:         \e[32m (текст) \e[42m (фон)
Жёлтый:        \e[33m (текст) \e[43m (фон)
Синий:          \e[34m (текст) \e[44m (фон)
Пурпурный:       \e[35m (текст) \e[45m (фон)
Голубой:          \e[36m (текст) \e[46m (фон)
Светло-серый:    \e[37m (текст) \e[47m (фон)
Цвета по умолчанию: \e[39m (текст) \e[49m (фон)

Можно комбинировать различные цвета текста и фона, а также использовать вместе с ними коды форматирования текста.

Команда read

Команда read – противоположность команды echo. Она считывает ввод в одну или более переменных. В качестве аргумента этой команды используется переменная, в которой нужно хранить данные. для примера рассмотрите простой скрипт, который создаёт папку с заданным именем:

#!/bin/bash
read foldername
mkdir foldername

Но этот скрипт не использует интерфейс. Как пользователь поймёт, когда и что нужно ввести?

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

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

Создайте и откройте файл:

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

Перепишите скрипт, чтобы он получил доступ к интерфейсу:

#!/bin/bash
#Backup script 2.0
#Description: makes a copy of any given file at the backup folder
#Author: Your Name
#Date: 2/22/2016
#Request the backup folder from the user:
echo -e "\e[1m\e[32mFile Backup Utility\n\e[39m\e[0mPlease input your backup folder:"
read BACKUPFOLDER
#The script will make sure the folder exists
mkdir -p $BACKUPFOLDER
#Request files to be backed up:
echo -e "\e[47m\e[30mWhich files do you want backed up?\e[39m\e[49m"
read FILES
cp -a $FILES $BACKUPFOLDER

Заключение

Данное руководство охватывает базовые команды, необходимые для создания интерактивного скрипта.

Tags:

1 комментарий

Добавить комментарий для Валерий Отменить ответ