Как выполнить команду с помощью сценария оболочки в Linux
Введение
Shell — это интерпретатор командной строки, который позволяет пользователю взаимодействовать с системой. Он отвечает за получение входных данных от пользователя и отображение выходных данных.
Сценарии оболочки представляют собой серию команд, написанных в порядке их выполнения. Эти сценарии могут содержать функции, циклы, команды и переменные. Скрипты полезны для упрощения сложной последовательности команд и повторяющихся задач.
В этой статье вы узнаете, как создавать и выполнять сценарии оболочки для командной строки в Linux.
Предпосылки
Для выполнения этого урока вам понадобятся:
- Знакомство с использованием терминала.
- Знакомство с текстовым редактором.
- Знакомство с такими командами, как
chmod
,mkdir
иcd
.
Начиная
Сценарий оболочки необходимо сохранить с расширением .sh
.
Файл должен начинаться с строки shebang (#!
), чтобы система Linux знала, какой интерпретатор использовать для сценария оболочки.
Для сред, поддерживающих bash
, используйте:
#!/bin/bash
Для сред, поддерживающих shell
, используйте:
#!/bin/sh
В этом руководстве предполагается, что ваша среда поддерживает bash
.
Сценарии оболочки также могут иметь комментарии для повышения удобочитаемости. Хороший сценарий всегда содержит комментарии, которые помогают читателю понять, что именно делает сценарий, и причины выбора дизайна.
Создание и запуск сценария базовой оболочки
Вы можете создать сценарий оболочки с помощью редактора vi, команды cat
или текстового редактора.
В этом руководстве вы узнаете о создании сценария оболочки с помощью vi
:
- vi basic_script.sh
Это запустит редактор vi
и создаст файл basic_script.sh
.
Затем нажмите i
на клавиатуре, чтобы запустить РЕЖИМ ВСТАВКИ
. Добавьте следующие строки:
#!/bin/bash
whoami
date
Этот сценарий запускает команды whoami
и date
. whoami
отображает активное имя пользователя. date
отображает текущую отметку системного времени.
Чтобы сохранить и выйти из редактора vi
:
- Нажмите
ESC
- Введите
:
(двоеточие) - Введите
wq
- Нажмите
ENTER
Наконец, вы можете запустить скрипт с помощью следующей команды:
- bash basic_script.sh
Вы можете получить вывод, похожий на следующий:
Outputroot
Fri Jun 19 16:59:48 UTC 2020
Первая строка вывода соответствует команде whoami
. Вторая строка вывода соответствует команде date
.
Вы также можете запустить скрипт без указания bash
:
- ./basic_script.sh
Запуск файла таким образом может потребовать, чтобы пользователь сначала дал разрешение. Запуск с помощью bash
не требует этого разрешения.
Output~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
Это распечатывает значение, присвоенное переменной:
OutputHello! 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
.
OutputWhat 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
в него.
OutputWhat 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.
Рассмотрите некоторые повторяющиеся или трудоемкие задачи, которые вы часто выполняете, которые могли бы выиграть от сценария.
Продолжайте обучение с помощью аргументов в командной строке.