Основы написания скриптов: Руководство по написанию скриптов в Linux Bash

Содержание

Руководство по написанию скриптов в Linux Bash

Введение

Набор встроенных команд bash (и его аналогов sh, zsh, etc) совместим с любым POSIX-совместимым приложением в Linux, что позволяет встроить в ваш bash-скрипт любое совместимое приложение. Это дает очень большой набор возможностей в сфере автоматизации рутинных задач администрирования систем Linux, деплоя и сборки приложений, различных пакетных обработок, в том числе аудио и видео.

Командная строка — самый мощный пользовательский интерфейс из существующих на данный момент. Базовый уровень знаний получить достаточно просто. Рекомендуется изучить руководство bash. Это можно сделать, выполнив команду man bash.

Суть bash-скриптов — записать все ваши действия в один файл и выполнять их по необходимости.

В этой статье расскажем про написание bash-скриптов с нуля и получим представление, какую пользу можно из них извлечь. Рекомендуем держать под рукой bash-справочник, если вы планируете заняться этим всерьез.

Развертывание среды

Для выполнения скриптов, которые мы будем учиться писать, нужна среда. Если вы используете на своем компьютере систему Linux, вы можете делать все локально. Если Windows, — можете установить WSL/WSL2. Кроме того, вы можете создать виртуальный сервер и подключиться к нему по SSH. Так вы не навредите своему компьютеру если что-то пойдет не так.

Мы выбрали вариант создать виртуальную машину.  Залогинимся в личном кабинете https://my.selectel.ru/, нажав на вкладку «Облачная платформа». Там вы сможете создать виртуальный сервер.

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

Нажмем «Создать сервер». 

В разделе «Источник» убеждаемся, что выбран образ Ubuntu 20.04.

Конфигурацию можно настроить по своим потребностям.

В разделе «Сеть» стоит выбрать «Подсеть — Плавающий IP-адрес».

В разделе «Доступ» загрузите SSH-ключ и не забудьте сохранить root-пароль. Подробнее об этом рассказано в этой статье

Теперь можно создать сервер кнопкой «Создать» в самом низу.

Будет отображена страница статуса сервера, надо дождаться индикации ACTIVE вверху справа.

Теперь на вкладке «Порты» можно посмотреть IP-адрес, присвоенный серверу.

Не копируйте чужой код

Копирование чужого кода на свой компьютер/сервер опасно. Ранее существовал «патч Бармина», представляющий из себя команду rm -rf /*. Ее очень любили давать новичкам Linux на некоторых конференциях в качестве универсального средства от всех проблем. Суть команды — рекурсивное удаление всех каталогов внутри корневого каталога, т. е. всех системных и пользовательских файлов. Сейчас эта команда не сработает во всех актуальных версиях Linux, но раньше она служила злой шуткой и наказанием тем, кто копировал чужие скрипты на свои серверы и выполнял их. Способов навредить серверу/компьютеру все еще достаточно, но они не столь очевидны.

Выбор редактора

Вам потребуется удобный текстовый редактор. Если вы подключаетесь по SSH, то лучшим выбором будут 3 варианта:

  • * vim (если умеете из него выходить)
  • * nano (прост, удобен и надежен)
  • * mcedit (входит в пакет mc, классический двухпанельный консольный файловый менеджер)

Если вы делаете все локально, выбор полностью на вас. Обычный выбор под Linux — gedit. В этой инструкции мы пользовались nano через SSH на удаленном сервере.

Запуск “Hello, World!”

Первая программа, которую обычно пишут программисты это «Hello, World!» —  простой вывод этой строки. Мы тоже с этого начнем. За вывод строки в консоль отвечает команда echo. Прямо в консоли вы можете напечатать echo «Hello, World!» и получить соответствующий вывод:

root@geneviev:~ # echo "Hello, World!"
Hello, World!

Сделаем это программой. Команда touch helloworld.sh создаст файл helloworld.sh. Команда nano helloworld.sh откроет этот файл для редактирования. Заполним файл нашей программой:

#!/bin/bash
echo "Hello, World!"

Для выхода с сохранением из nano надо нажать CTRL + O для сохранения (после чего нажать enter для перезаписи текущего открытого файла), а потом CTRL + X для выхода. Можно выходить без сохранения, при этом он спросит, точно ли вы хотите выйти без сохранения. Если да, надо нажать N для выхода без сохранения. Если вы нажмете Y, он спросит куда сохранить измененный файл, можно нажать enter для перезаписи редактируемого файла.

Разберем, что мы написали.

Первой строкой идет #!/bin/bash — фактически это указание на местоположение интерпретатора. Чтобы при запуске скрипта не требовалось указывать отдельно интерпретатор. Убедиться, что ваш bash интерпретатор лежит по этому пути можно через команду which bash:

root@geneviev:~ # which bash
/usr/bin/bash

Второй строкой идет непосредственно вся наша программа. Как она работает, мы разобрали выше, перейдем к выполнению.

Запустить ваш скрипт/команду можно двумя способами.

Способ №1: bash helloworld.sh. Вы вызываете интерпретатор и в аргументе передаете ему имя файла для исполнения.

root@geneviev:~ # bash helloworld.sh 
Hello, World!

Способ №2: Сначала надо разрешить системе исполнять скрипт: chmod +x helloworld.sh. Эта команда сделает файл исполняемым. Теперь вы можете запустить его как любой бинарный файл в linux: ./helloworld.sh

root@geneviev:~ # ./helloworld.sh 
Hello, World!

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

Аргументы

Это параметры, которые вы можете передать программе при ее вызове. Например, программа ping принимает в качестве обязательного аргумента IP-адрес или DNS-имя, которое требуется пропинговать: ping selectel.ru. Это простой и удобный способ общения пользователя с программой.

Давайте научим нашу программу принимать аргументы и работать с ними. Доступ к аргументам осуществляется через служебную команду $X где X это число. $0 — всегда имя исполняемого скрипта. $1 — первый аргумент, $2 — второй и так далее. Конечно, если вы планируете передавать пару десятков аргументов вашему приложению, это может быть несколько утомительно, так что вам понадобится что-то вроде этого цикла, чтобы перебрать все поступившие аргументы:

for var in "$@"; do
    echo "$var"
done

Подробнее про циклы будет рассказано в следующих разделах.

Пример, создадим новый файл: touch hellousername.sh. Выдаем права на исполнение chmod +x hellousername.sh.

Открываем nano hellousername.sh

Код примера следующий:

#!/bin/bash 

echo "Hello, $1!"

Сохраняем, закрываем. Смотрим, что получилось.

root@geneviev:~ # . /hellousername.sh Vasya
Hello, Vasya!

Программа получилась маленькая, но она учит пользоваться (на самом базовом уровне) аргументами, которые мы в нее можем передать. В данном случае аргумент передается один, Vasya, мы сразу его используем, не делая никаких проверок. 

root@geneviev:~ # ./hellousername.sh 
Hello, !

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

Способ №1

#!/bin/bash
if [ "$#" -lt 1 ]; then
    echo "Недостаточно аргументов. Пожалуйста, передайте в качестве аргумента имя. Пример: $0 Vasya"
    exit 1
fi
echo "Hello, $1!"

Более подробно конструкцию if then [else] fi мы рассмотрим далее, пока не будем на ней останавливаться. Важно понимать, что тут проверяется. $# Это число аргументов без учета имени скрипта, который всегда $0.  

Способ №2

#!/bin/bash
if [ -z "$1" ]; then
   echo "Имя пустое или не передано. Пожалуйста, передайте в качестве аргумента имя. Пример: $0 Vasya"
   exit 1
fi

echo "Hello, $1!"

Здесь тоже используется конструкция if then [else] fi. Ключ -z в if используется для проверки переменной на пустую строку. Есть противоположный ключ -n, он проверяет что строка не пустая. Конечно, этот способ некорректно использовать для проверки входящих аргументов, но в теле самой программы он будет полезен. Например, чтобы проверить что выполненное в самой программе приложение что-то вернуло.

Управляющие конструкции

if-else

Написание программ на любом из языков длиннее нескольких строчек сложно представить без ветвления. В разных языках бывают разные варианты ветвления, но в большинстве случаев используется синтаксис if else. В bash это также присутствует.

Возьмем один из примеров выше.

#!/bin/bash
if [ "$#" -lt 1 ]; then
    echo "Недостаточно аргументов. Пожалуйста, передайте в качестве аргумента имя. Пример: $0 Vasya"
    exit 1
fi
echo "Hello, $1!"

Происходит проверка системной переменной $# на то, что она меньше, чем (lower than, -lt) 1. Если это выражение истинно, мы переходим в блок команд, открывающийся ключевым словом then. Весь блок, начинающийся с if, должен завершаться ключевым словом fi. Более сложная структура ветвления может выглядеть примерно так:

if TEST-COMMAND1
then
  STATEMENTS1
elif TEST-COMMAND2
then
  STATEMENTS2
else
  STATEMENTS3
fi

Реальный пример:

#!/bin/bash
if [ "$#" -lt 1 ];
then
    echo "Недостаточно аргументов. Пожалуйста, передайте в качестве аргумента имя. Пример: $0 Vasya"
    exit 1
fi
if [ "$1" = "Vasya" ]; then
        echo "Whatsupp, Vasiliy?"
elif [ "$1" = "Masha" ];
then
        echo "Hey, Masha"
elif [ "$1" = "Michael" ];
then
        echo "Shalom, Michael"
else
        echo "Hi, $1"
fi

Вывод программы:

root@geneviev:~ # . /hellousername.sh Vasya
Whatsupp, Vasiliy?
root@geneviev:~ # ./hellousername.sh Masha
Hey, Masha
root@geneviev:~ # ./hellousername.sh Michael
Shalom, Michael
root@geneviev:~ # ./hellousername.sh Andrew
Hi, Andrew
root@geneviev:~ # ./hellousername.sh 
Недостаточно аргументов. Пожалуйста, передайте в качестве аргумента имя. Пример: ./hellousername.sh Vasya

Выражение «$1» = «Vasya» проверяет строки на идентичность. Блок после else выполняется только если выше не найден более подходящий блок.

&& и ||

В предыдущей главе вы могли заметить, что я использовал exit 1 для завершения работы программы в случае неуспешной проверки аргумента. Это означает, что программа завершилась с ошибкой. В bash есть операторы && и ||, которые используются для создания цепочек команд. Каждая цепочка зависит от результата выполнения предыдущей программы.

Пример 1: command1 && command2. В этом случае command2 выполнится, только если command1 завершится с кодом 0 (exit 0, по умолчанию). 

Пример 2: command1 || command2. В этом случае command2 выполнится, только если command1 завершится с кодом отличным от 0. 

Пример 3: command1 && command2 || command3. Если command1 завершится с кодом 0, то будет выполнен command2, иначе command3.

Переменные

Как гласит один из основных принципов программирования — Do Not Repeat Yourself (DRY). Вот и мы не будем повторять себя и перепишем предыдущий пример с использованием переменных, чтобы не вызывать echo каждый раз.

Переменные в bash создаются присваиванием: x=»foo bar» или z=$1. Переменной x мы присвоили строку @foo bar«, а переменной z мы присвоили значение первого аргумента. Использовать именованные переменные гораздо удобнее, чем использовать $1, особенно когда надо использовать его значение во многих местах.

К тому же, аргументы могут идти в разном порядке. Осмысленные названия переменных очень важны, при разрастании программы это снизит неизбежную путаницу. Избегайте имен переменных (и функций) вроде «a», «b», «zzzz», etc.

Чтобы не вызывать echo в каждом варианте с разными строками, разобьем строку на части. Первая часть будет приветствием. Вторая — именем. Третья — завершающим знаком препинания. Его можно не выносить в переменную.

#!/bin/bash

greetString="Hello"
nameString="stranger"

if [ "$#" -lt 1 ];
then
    echo "Недостаточно аргументов. Пожалуйста, передайте в качестве аргумента имя. Пример: $0 Vasya"
    exit 1
fi

if [ "$1" = "Vasya" ]; 
then
    nameString="Vasiliy"
	greetString="Whatsup"
elif [ "$1" = "Masha" ];
then
	nameString="Maria"
elif [ "$1" = "Michael" ];
then
	greetString="Shalom"
	nameString="Michael"
fi

echo "$greetString, $nameString!"

В этом примере мы создаем переменные greetString и nameString, которым присваиваем значения по умолчанию. В конце программа выводит значения этих двух переменных с помощью echo и форматированной строки (в двойных кавычках переменные раскрываются). Между этими действиями программа определяет, надо ли присваивать переменным другие значения.

Switch case

Использование if-else конструкции в нашем примере не является оптимальным вариантом. Мы всего лишь сверяем значение переменной с определенным набором значений. В такой ситуации лучшим выбором будет switch-case-конструкция.

case "$variable" in

 "$condition1" )
 command...
 ;;

 "$condition2" )
 command...
 ;;

esac

Перепишем нашу программу приветствий с использованием switch-case:

#!/bin/bash

name=$1

case "$name" in
  "Vasya" )
    nameString="Vasiliy"
	greetString="Whatsup"
  ;;
  "Masha" )
	greetString="Hey"
	nameString="Maria"
  ;;
  * )
	greetString="Hello"
	nameString="stranger"
  ;;
esac

echo "$greetString, $nameString!"

Циклы

Как и любой полноценный язык программирования, bash поддерживает циклы. Цикл for и цикл while. Циклы нужны, чтобы выполнять какой-то код заданное число раз. Например, при парсинге CSV перебирать построчно и каждую строку рассматривать отдельно.

Цикл for

Вот пример структуры цикла for:

for var in list
do
команды
done

Простой реальный пример:

#!/bin/bash

for name in Maria Vasya Michael stranger
do
	echo "Hello, $name!"
done

Вывод:

root@geneviev:~ # ./cycle.sh 
Hello, Maria!
Hello, Vasya!
Hello, Michael!
Hello, stranger!

Программа просто перебирает все имена, разделенные пробелом, и выводит их с помощью echo.

Попробуем немного усложнить пример:

#!/bin/bash
file=$1
for name in $(cat $file)
do 
	echo "Hello, $name!"
done

Создадим файл с именами touch names и запишем в него список имен для приветствия:

Maria
Vasiliy
Ivan
Nikolai
Innokentiy

Вывод:

root@geneviev:~ # . C. Это символ прерывания выполнения программы. В нашем случае мы вызвали программу без аргумента, и она вошла в вечный цикл. Можно сказать, зависла. Пришлось завершить ее принудительно. Не забывайте делать проверки входных данных в реальных программах.  Как это делать, можете посмотреть в главах if-else и switch case, например.  

В нашей программе есть небольшой баг. Модифицируем файл имен:

Erich Maria Remarque
Vasiliy
Ivan
Nikolai
Innokentiy

Запустим программу, получим вывод:

root@geneviev:~ # ./cycle.sh names
Hello, Erich!
Hello, Maria!
Hello, Remarque!
Hello, Vasiliy!
Hello, Ivan!
Hello, Nikolai!
Hello, Innokentiy!

Как говорится, «Кто все эти люди?». Так получается, потому что у нас не задана переменная окружения IFS (Internal Field Separator), указывающая на разделители полей. Наш цикл использует пробелы и переносы строки как разделители. В начале скрипта (после #!/bin/bash) укажите использовать перенос строки как разделитель полей: IFS=$’\n’.  

root@geneviev:~ # ./cycle.sh names 
Hello, Erich Maria Remarque!
Hello, Vasiliy!
Hello, Ivan!
Hello, Nikolai!
Hello, Innokentiy!

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

Обычно цикл for используется со счетчиком. В C-like стиле. Что-то вроде for (i=0;i<10;i++){}. В bash тоже так можно. 

#!/bin/bash
for (( i=1; i 

Цикл while

Схема организации цикла while:

while команда проверки условия
do
другие команды
done

Простой способ сделать бесконечную петлю (бесконечный цикл):

while true
	do
	echo "this is infinity loop"
done

Это может пригодится, например, когда вам нужно вызывать что-то чаще, чем позволяет cron (например, раз в минуту). Или когда вам просто надо проверять какое-то значение постоянно. Областей применения у бесконечных циклов много.

Здесь используются те же самые выражения, что и в if:

#!/bin/bash
count=0
while [ $count -lt 10 ]
do
	(( count++ ))
	echo "count: $count"
done

Вывод:

root@geneviev:~ # . /cycle.sh 
count: 1
count: 2
count: 3
count: 4
count: 5
count: 6
count: 7
count: 8
count: 9
count: 10

Из цикла можно выйти с помощью команды break (работает также и для for):

#!/bin/bash
count=0
while [ $count -lt 10 ]
do
	(( count++ ))
	echo "count: $count"
	if [ "$count" -gt 5 ]
	then
		break
	fi
done

Вывод:

root@geneviev:~ # ./cycle.sh 
count: 1
count: 2
count: 3
count: 4
count: 5
count: 6

Заключение

Несмотря на огромную конкуренцию в сфере автоматизации рутины со стороны python, ruby, perl bash не сдает позиции. Он прост в освоении и использовании, гибок и так или иначе присутствует в абсолютном большинстве дистрибутивов Linux.

В этой статье были приведены только основы написания программ на bash. Надеемся, вы нашли их полезными для себя.

Учебное пособие — Написание скриптов для начинающих ‒ Qlik Cloud

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

Перед тем как создавать визуализации в приложениях в Qlik Sense, вам необходимо загрузить свои данные. Знание того, как использовать скрипты загрузки, позволяет пользователю подготовить данные и управлять ими при загрузке в приложение.

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

Что вы узнаете

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

Кому следует пройти этот курс

Необходимо знать основные принципы работы с программой Qlik Sense. То есть необходимо иметь опыт создания приложений и визуализаций.

Требуется доступ к редактору загрузки данных, а также разрешение на загрузку данных в Qlik Sense SaaS.

Что требуется сделать перед началом работы

Загрузите этот пакет и распакуйте его на своем рабочем столе:

Учебное пособие для начинающих по написанию скриптов

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

  • Customers.xlsx
  • Dates.xlsx
  • Region.txt
  • Sales.xlsx

Кроме того, данный пакет содержит копию приложения Учебное пособие по написанию скриптов. Вы можете загрузить приложение в свой хаб в Qlik Sense Enterprise SaaS.

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

Но если у вас возникнут проблемы, приложение может помочь вам их решить. Мы указали, с каким уроком связаны какие сегменты скрипта.

Уроки, содержащиеся в учебном пособии

В зависимости от опыта работы с Qlik Sense для изучения этого учебного пособия потребуется 3–4 часа. Темы должны изучаться последовательно. Однако вы всегда можете прерваться и в любое время снова вернуться к ним. К счастью, тестов здесь нет.

Дополнительные информационные ресурсы

  • Программа Qlik предлагает широкий набор ресурсов для дополнительного изучения.
  • Доступна интерактивная справка Qlik.
  • Обучение, в том числе бесплатные интерактивные курсы, доступно в разделе Qlik Continuous Classroom.
  • Дискуссионные форумы, блоги и многое другое находится в разделе Qlik Community.

Ваше мнение важно

Мы высоко ценим любые ваши отзывы. Используйте раздел ниже, чтобы сообщить нам свое мнение о нашей работе.

Учебное пособие по написанию сценариев оболочки

Купите это руководство по созданию сценариев оболочки в формате PDF всего за 5 долларов США

Цель этого руководства

Это руководство написано, чтобы помочь людям понять некоторые основы оболочки .
скрипт
(он же shell scripting ) и, надеюсь, представить некоторые возможности простого, но
мощное программирование, доступное в оболочке Bourne. Таким образом, было написано как
основой для индивидуальных или групповых занятий и упражнений, а также в качестве справочного материала для последующих
использовать.

Получение самой последней версии этого руководства

Вы читаете Версия 4.3 , последнее обновление 19 октября 2022 г. .
Самая последняя версия этого руководства всегда доступна по адресу:
https://www.shellscript.sh.
Всегда проверяйте там последнюю копию. (Если вы читаете это по какому-то другому адресу, вероятно, это копия настоящего сайта и, следовательно, может быть устаревшей).

Краткая история sh

Стив Борн написал оболочку Борна, которая появилась в седьмом издании Bell Labs Research
версия Юникс.
Было написано много других оболочек; этот конкретный учебник концентрируется
на оболочках Bourne и Bourne Again.
Другие оболочки включают оболочку Korn (ksh), оболочку C (csh) и варианты, такие как tcsh.
В этом руководстве , а не охватывают эти оболочки.

Аудитория

Этот учебник предполагает некоторый предыдущий опыт; а именно:

  • Использование интерактивной оболочки Unix/Linux
  • Минимальные знания в области программирования - использование переменных, функций, полезные базовые знания
  • Понимание некоторых команд Unix/Linux и компетентность в использовании некоторых из более распространенных . ( LS , CP , Echo и т. Д.)
  • Программисты Ruby , Perl , Python , C , Pascal или любой язык Python (даже базовый язык, который может быть, может быть, может быть, может быть, может быть, может читать сценарии оболочки,
    но не чувствую, что они точно понимают, как они работают.

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

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

Значимые слова будут курсивом при упоминании
первый раз.

Сегменты кода и выходные данные скрипта будут отображаться как моноширинный текст.
Записям командной строки будет предшествовать знак доллара ($). Если ваше приглашение отличается,
введите команду:

 PS1="$" ; экспорт PS1 

Тогда ваши взаимодействия должны
соответствуют приведенным примерам (например, ./my-script.sh ниже).
Вывод сценария (например, "Hello World" ниже) отображается в начале строки.

 $ echo '#!/bin/sh' > my-script.sh
$ echo 'эхо Hello World' >> my-script.sh
$ chmod 755 my-script.sh
$ ./my-script.sh
Привет, мир
$
 

Целые скрипты будут отображаться на сером фоне и содержать ссылку на обычный текст скрипта, если он доступен:


my-script.sh

 #!/bin/sh
# Это комментарий!
echo Hello World # Это тоже комментарий!
 

Обратите внимание: чтобы сделать файл исполняемым, необходимо установить бит исполняемого файла, а для оболочки
script необходимо также установить бит Readable:

 $ chmod a+rx my-script. sh
$ ./my-script.sh
 

Далее: Философия

Книги и электронные книги

Контакты

Вы можете отправить мне письмо с этой формой. Если вы ожидаете ответа, убедитесь, что указанный вами адрес действителен. Не забудьте включить простой дополнительный вопрос в конце формы, чтобы доказать, что вы реальный человек!

Как создать сценарий оболочки в Linux/Unix

ByMary Brent

Часы

Обновлено

Shell Scripting

Shell Scripting — это компьютерная программа с открытым исходным кодом, предназначенная для запуска в оболочке Unix/Linux. Shell Scripting — это программа для написания серии команд для выполнения оболочкой. Он может объединять длинные и повторяющиеся последовательности команд в один простой сценарий, который можно сохранить и выполнить в любое время, что сокращает усилия по программированию.

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

Что такое Шелл?

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

Работа состоит из многих компонентов, но два ее основных компонента —

  • Ядро
  • Корпус

Компоненты программы оболочки

Ядро — это ядро ​​компьютера. Это делает возможной связь между аппаратным и программным обеспечением. В то время как ядро ​​​​является самой внутренней частью операционной системы, оболочка — самая внешняя.

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

Когда вы запускаете терминал, Shell выдает командную строку (обычно $), где вы можете ввести свой ввод, который затем выполняется, когда вы нажимаете клавишу Enter. Вывод или результат после этого отображаются на терминале.

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

Этот учебник по сценариям оболочки Unix/Linux помогает понять основы сценариев оболочки до продвинутого уровня.

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

  • Что такое сценарии оболочки?
  • Что такое оболочка?
  • Типы оболочки
  • Как написать сценарий оболочки в Linux/Unix
  • Добавление комментариев оболочки
  • Что такое переменные оболочки?

Щелкните здесь, если видео недоступно

Типы оболочек

В Linux есть две основные оболочки:

1 . Bourne Shell : Подсказка для этой оболочки — $, и ее производные перечислены ниже:

  • Оболочка POSIX также известна как sh
  • .

  • Korn Shell также известен как sh
  • B ourne A усиление SH ell также известный как bash (самый популярный)

2. Оболочка C : Приглашение для этой оболочки — %, а ее подкатегории:

  • Оболочка C также известна как csh
  • Корпус

  • Tops C также известен как tcsh
  • .

В этом руководстве мы обсудим сценарии оболочки на основе оболочки bash.

Как написать сценарий оболочки в Linux/Unix

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

Давайте разберемся с этапами создания сценария оболочки:

  1. Создайте файл с помощью редактора a vi (или любого другого редактора). Имя файла сценария с расширением .sh
  2. Запустить скрипт с #! /бин/ш
  3. Напишите код.
  4. Сохраните файл сценария как имя_файла.sh
  5. Для выполнения типа сценария bash filename.sh

«#!» — это оператор shebang, который направляет сценарий в местонахождение интерпретатора. Итак, если мы используем «#! /bin/sh» сценарий направляется в оболочку Bourne.

Создадим небольшой скрипт —

 #!/bin/sh
ls 

Давайте посмотрим, как создавать программы сценариев оболочки в Linux/Unix —


Шаги по созданию сценария оболочки в Linux/Unix

Команда «ls» выполняется, когда мы запускаем файл script sample.sh.

Добавление комментариев оболочки

Комментирование важно в любой программе. В программировании оболочки синтаксис для добавления комментария:

 #comment 

Давайте разберемся с этим на примере.

Что такое переменные оболочки?

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

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

 variable ="Hello"
echo $variable 

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

 #!/бин/ш
эхо "как тебя зовут?"
прочитать имя
echo "Как дела, $name?"
прочитать замечание
echo "Я тоже $remark!" 

Давайте разберемся, шаги по созданию и выполнению скрипта

Как видите, программа выбрала значение переменной «имя» как «Радость», а «примечание» как «отлично».

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

Резюме:

  • Ядро — это ядро ​​операционной системы, обеспечивающее связь между аппаратным и программным обеспечением
  • Shell — это программа, которая интерпретирует пользовательские команды через интерфейс командной строки, например Terminal
  • .

  • Оболочка Bourne и оболочка C являются наиболее часто используемыми оболочками в Linux
  • Сценарий оболочки Linux записывает серию команд для выполнения оболочкой
  • Переменные оболочки сохраняют значение строки или числа для чтения оболочкой
  • Сценарии оболочки в Linux могут помочь вам создавать сложные программы, содержащие условные операторы, циклы и функции
  • Базовые команды сценариев оболочки в Linux: cat, more, less, head, tail, mkdir, cp, mv, rm, touch, grep, sort, wc, cut и другие.

    This entry was posted in Популярное