Выполнение команд через shell-скрипты в Linux

Оболочка — это интерпретатор командной строки, который позволяет пользователю взаимодействовать с системой. Он отвечает за получение входных данных от пользователя и вывод данных.

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

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

Требования

Нам понадобится:

  • Умение пользоваться терминалом.
  • Знание текстового редактора.
  • Знание команд: chmod, mkdir и cd.

Читайте также

Начало работы

Скрипты оболочки нужно сохранять с расширением .sh.

Файл должен начинаться с шебанга (#!), чтобы система Linux понимала, какой интерпретатор использовать для сценария оболочки.

Для сред bash введите:

#!/bin/bash

Для сред shell введите:

#!/bin/sh

В этом мануале предполагается, что вы используете среду bash.

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

Создание и запуск базового shell-скрипта

Скрипт оболочки можно создать с помощью редактора vi, команды cat или текстового редактора.

Мы будем создавать с помощью vi:

vi basic_script.sh

Команда запустит редактор vi и создаст файл basic_script.sh.

Затем нажмите i на клавиатуре для запуска INSERT MODE. Добавьте следующие строки:

#!/bin/bash
whoami
date

Скрипт запускает команды whoami и date. Команда whoami отображает активное имя пользователя, а date — текущую системную метку времени.

Чтобы сохранить и выйти из редактора vi:

  • Нажмите ESC
  • Нажмите двоеточие (:)
  • Введите wq
  • Нажмите ENTER

Теперь можно запустить сценарий с помощью команды:

bash basic_script.sh

Получим следующий вывод:

root
Fri Jun 19 16:59:48 UTC 2020

Первая строка вывода соответствует команде whoami, а вторая команде date.

Можно запустить скрипт без указания bash:

./basic_script.sh

Запуск файла таким образом может потребовать разрешение пользователя. Запуск с помощью bash не требует этого разрешения.

~bash: ./basic_script.sh: Permission denied

Команда bash filename требует только прав на чтение.

Команда ./filename запускает файл как исполняемый и требует разрешения execute.

Для выполнения сценария нужно обновить привилегии.

chmod +x basic_script.sh

Эта команда применит chmod и дает права x (исполнение) текущему пользователю.

Использование переменных в скриптах

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

Добавьте в скрипт следующие строки:

#!/bin/bash
# This is a comment

# defining a variable
GREETINGS="Hello! How are you"
echo $GREETINGS

GREETINGS — это переменная, определенная с помощью символа $ (знак доллара). В строке, в которой переменным присваивается значение, не должно быть пробелов.

Запустите скрипт:

bash basic_script.sh

На экран выведется присвоенное переменной значение:

Hello! How are you

Как видите, переменная GREETINGS успешно определена в сценарии и доступна при запуске скрипта.

Чтение ввода из командной строки

Shell-скрипты можно сделать интерактивными с возможностью принимать ввод из командной строки. Сохранить ввод командной строки в переменной можно с помощью команды read.

Добавьте в скрипт следующие строки:

#!/bin/bash
# This is a comment

# defining a variable
echo "What is your name?"
# reading input
read NAME
# defining a variable
GREETINGS="Hello! How are you"
echo $NAME $GREETINGS

Переменная NAME принимает ввод из командной строки. Этот скрипт ожидает, пока пользователь введет значение NAME. Затем он выводит NAME и GREETINGS.

What is your name?
8host
8host Hello! How are you

В примере пользователь ввел значение 8host.

Определение функций

Пользователи могут определять свои функции в сценариях. Эти функции могут принимать несколько аргументов.

Добавьте в скрипт следующие строки:

#!/bin/bash
#This is a comment

# defining a variable
echo "What is the name of the directory you want to create?"
# reading input 
read NAME

echo "Creating $NAME ..."
mkcd ()
{
  mkdir "$NAME" 
  cd "$NAME"
}

mkcd
echo "You are now in $NAME"

Этот скрипт запрашивает имя каталога. Затем он c помощью mkdir создает требуемый каталог и переходит в него.

What is the name of the directory you want to create?
test_dir
Creating test_dir ...
You are now in test_dir

В данном примере мы ввели test_dir. Далее скрипт создаст новый каталог с этим названием. Наконец, скрипт перейдет из текущего рабочего каталога пользователя в test_dir.

Заключение

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

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

Tags: ,

Добавить комментарий