Поиск по сайту:

Как выполнить команду с помощью сценария оболочки в Linux


Введение

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

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

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

Предпосылки

Для выполнения этого урока вам понадобятся:

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

Начиная

Сценарий оболочки необходимо сохранить с расширением .sh.

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

Для сред, поддерживающих bash, используйте:

#!/bin/bash 

Для сред, поддерживающих shell, используйте:

#!/bin/sh

В этом руководстве предполагается, что ваша среда поддерживает bash.

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

Создание и запуск сценария базовой оболочки

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

В этом руководстве вы узнаете о создании сценария оболочки с помощью vi:

  1. vi basic_script.sh

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

Затем нажмите i на клавиатуре, чтобы запустить РЕЖИМ ВСТАВКИ. Добавьте следующие строки:

#!/bin/bash
whoami
date

Этот сценарий запускает команды whoami и date. whoami отображает активное имя пользователя. date отображает текущую отметку системного времени.

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

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

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

  1. bash basic_script.sh

Вы можете получить вывод, похожий на следующий:

Output
root Fri Jun 19 16:59:48 UTC 2020

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

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

  1. ./basic_script.sh

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

Output
~bash: ./basic_script.sh: Permission denied

Для команды bash filename требуется только разрешение чтение файла.

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

Чтобы выполнить скрипт, вам нужно будет обновить разрешения.

  1. chmod +x basic_script.sh

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

Использование переменных в сценариях оболочки

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

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

#!/bin/bash
# This is a comment

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

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

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

  1. bash basic_script.sh

Это распечатывает значение, присвоенное переменной:

Output
Hello! How are you

При запуске скрипта определяется и открывается GREETINGS.

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

Сценарии оболочки можно сделать интерактивными с возможностью принимать ввод из командной строки. Вы можете использовать команду 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.

Output
What is your name? Sammy Sammy Hello! How are you

В этом примере пользователь предоставил приглашение с именем: Sammy.

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

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

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

#!/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"

Этот сценарий запрашивает у пользователя имя каталога. Затем он использует mkdir для создания каталога и cd в него.

Output
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.

Рассмотрите некоторые повторяющиеся или трудоемкие задачи, которые вы часто выполняете, которые могли бы выиграть от сценария.

Продолжайте обучение с помощью аргументов в командной строке.