- Выполнение команд через shell-скрипты в Linux
- Требования
- Начало работы
- Создание и запуск базового shell-скрипта
- Использование переменных в скриптах
- Чтение ввода из командной строки
- Определение функций
- Заключение
- Запуск скриптов формата SH в Linux
- Шаг 2: Настройка скрипта для утилиты env
- Шаг 3: Запуск имеющегося скрипта
- Linux shell script запуск
- Как же запустить shell скрипт в Linux?
- Теперь давайте рассмотрим другой пример создания sh скрипта в Linux.
- Что у нас есть в скрипте test.sh?
Выполнение команд через shell-скрипты в Linux
Оболочка — это интерпретатор командной строки, который позволяет пользователю взаимодействовать с системой. Он отвечает за получение входных данных от пользователя и вывод данных.
Сценарии оболочки — это серия команд, записанных в порядке выполнения. Сценарии могут содержать функции, циклы, команды и переменные. Они упрощают сложные серии команд и повторяющиеся задачи.
В этом мануале мы разберем, как создавать и выполнять сценарии оболочки для командной строки в Linux.
Требования
- Умение пользоваться терминалом.
- Знание текстового редактора.
- Знание команд: chmod, mkdir и cd.
Читайте также:
Начало работы
Скрипты оболочки нужно сохранять с расширением .sh.
Файл должен начинаться с шебанга (#!), чтобы система Linux понимала, какой интерпретатор использовать для сценария оболочки.
В этом мануале предполагается, что вы используете среду bash.
В скриптах также могут содержаться комментарии, они нужны для упрощения их читаемости. Удобный сценарий всегда содержит комментарии, которые помогают понять принцип работы скрипта и причины выбора тех или иных команд.
Создание и запуск базового shell-скрипта
Скрипт оболочки можно создать с помощью редактора vi, команды cat или текстового редактора.
Мы будем создавать с помощью vi:
Команда запустит редактор vi и создаст файл basic_script.sh.
Затем нажмите i на клавиатуре для запуска INSERT MODE. Добавьте следующие строки:
Скрипт запускает команды whoami и date. Команда whoami отображает активное имя пользователя, а date — текущую системную метку времени.
Чтобы сохранить и выйти из редактора vi:
Теперь можно запустить сценарий с помощью команды:
root Fri Jun 19 16:59:48 UTC 2020
Первая строка вывода соответствует команде whoami, а вторая команде date.
Можно запустить скрипт без указания bash:
Запуск файла таким образом может потребовать разрешение пользователя. Запуск с помощью bash не требует этого разрешения.
~bash: ./basic_script.sh: Permission denied
Команда bash filename требует только прав на чтение.
Команда ./filename запускает файл как исполняемый и требует разрешения execute.
Для выполнения сценария нужно обновить привилегии.
Эта команда применит chmod и дает права x (исполнение) текущему пользователю.
Использование переменных в скриптах
Скрипты могут включать пользовательские переменные. По мере увеличения размера сценариев важно иметь четко определенные переменные с информативными именами.
Добавьте в скрипт следующие строки:
#!/bin/bash # This is a comment # defining a variable GREETINGS="Hello! How are you" echo $GREETINGS
GREETINGS — это переменная, определенная с помощью символа $ (знак доллара). В строке, в которой переменным присваивается значение, не должно быть пробелов.
На экран выведется присвоенное переменной значение:
Как видите, переменная 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.
Подумайте о повторяющихся или отнимающих много времени задачах, которые вы часто выполняете – возможно, такие команды полезнее заменить скриптами.
Запуск скриптов формата SH в Linux
Сначала мы предлагаем создать проверочный скрипт, который в будущем будем запускать. Конечно, вы можете пропустить данный этап, если сценарий командной строки уже имеется. Отметим, что сейчас мы не будем разбирать синтаксис языков программирования, а лишь расскажем, что каждому под силу создать собственный скрипт или вставить содержимое в файл для дальнейшего его вызова по обстоятельствам.
- Запустите «Терминал» удобным для вас образом, например, через меню приложений или горячую клавишу Ctrl + Alt + T.
- Здесь используйте команду sudo nano script.sh , где nano — используемый текстовый редактор, а script.sh — название создаваемого файла. Можно создавать файл, например, через тот же vi или gedit, сути это не изменит, а название элемента тоже меняется по личным предпочтениям пользователя.
- Подтвердите это действие, введя пароль от учетной записи суперпользователя, поскольку оно выполняется с аргументом sudo.
echo «Hello world»
Как видим, ничего сложного в создании собственных скриптов для Bash нет, однако вся особенность заключается в знании кода. Придется либо писать его с нуля самому, либо скопировать готовые решения из свободных источников. После того, как скрипт успешно реализован в файле, можно смело переходить к следующему этапу.
Шаг 2: Настройка скрипта для утилиты env
Этот шаг тоже является не обязательным, однако без него не обойтись пользователям, которые задействуют утилиту env для запуска скрипта. Без предварительной настройки он просто не откроется, поскольку изначально не были получены соответствующие разрешения. Добавляются они через команду sudo chmod ugo+x script.sh , где script.sh — название необходимого файла.
Не забывайте, что все действия, выполняемые через аргумент sudo, требуют подтверждения подлинности учетной записи через ввод пароля суперпользователя. После этого отобразится новая строка для запуска команд, что означает успешное применение настройки.
Шаг 3: Запуск имеющегося скрипта
Перейдем к основному шагу, который и заключается в непосредственном запуске имеющегося скрипта. Для начала рассмотрим простую команду, которая имеет вид ./script.sh и отвечает за запуск файла из текущего места расположения. Результат вывода вы видите на приведенном ниже скриншоте. За пример мы взяли созданный ранее сценарий. По тому же принципу можно указать и полный путь к объекту, чтобы строка изменилась, например, на /home/user/script.sh .
В Linux имеется системная переменная PATH. В нее входит ряд папок, отвечающих за выполнение самых разнообразных действий. Одна из них называется /usr/local/bin и используется для ручной инсталляции программ. Если вы не желаете постоянно указывать полный путь к скрипту для его активации, просто добавьте его в одну из папок PATH. Для этого используется строка cp script.sh /usr/local/bin/script.sh .
После этого запуск будет доступен путем простого ввод названия файла с учетом расширения.
Второй метод открытия заключается в одновременном вызове оболочки. Вам следует переместиться в директорию со скриптом и написать bash script.sh . Этот метод хорош тем, что позволяет не вписывать полный путь к объекту или предварительно добавлять его в соответствующие директории PATH.
Это все, что мы хотели рассказать о взаимодействии со скриптами в Linux. Вам остается только создать соответствующий файл или открыть уже имеющийся, используя приведенные выше рекомендации.
Linux shell script запуск
Новые пользователи Linux часто задают вопросы: Как запустить исполняемый файл в Linux? Как выполнить файл. sh в Linux?
Bash – это оболочка, или интерпретатор командного языка, для операционной системы Linux. Это название является аббревиатурой от Bourne-Again SHell.
Как же запустить shell скрипт в Linux?
Откроем терминал. Обычно он вызывается комбинацией клавиш Ctrl+Shift+T. Используйте консольный текстовый редактор вроде vi/vim или nano чтобы создать shell скрипт в линукс:
Сделайте скрипт исполняемым
Запустите shell скрипт, написал в терминале:
Теперь давайте рассмотрим другой пример создания sh скрипта в Linux.
Создадим новый файл скрипта test.sh:
Нажмем i или Insert на клавиатуре, чтобы перейти в режим вставки текста. Скопируем туда или напишем следующее:
!/bin/bash
echo «Hello, $USER»
echo «Today is $(date)»
echo «Bye»
Чтобы сохранить файл, нажмем ESC, затем напишем 😡 и нажмем ENTER.
Попробуем запустить скрипт:
bash: ./test.sh: Permission denied
Ошибка появилась потому что мы не сделали файл исполняемым. Сделаем это. Как и выше, чтобы сделать файл sh в линукс исполняемым, выполним команду:
Мы пишем ./ потому что находимся в той же директории, где и расположен скрипт. Так же мы можем использовать полный путь для запуска из другого места. Например, если скрипт находится в директории /home/user/ то можно запустить так из любого места:
Что у нас есть в скрипте test.sh?
Первая строка #!/bin/bash указывает на интерпретатор, спомощью которого будет исполняться скрипт. В нашем случае это Bash.
Вторая строка использует глобальную переменную $USER, которая содержит имя текущего пользователя, от которого исполняется скрипт. Мы получим “Hello, user”, если нашего пользователя зовут user.
В третьей строке мы используем переменную, содержащую текущую дату и время – $(date).
И в четвертой мы просто выводим Bye.