Bash скрипты linux pdf

Справочный материал / Bash-скрипты Часть 1

BASH — Bourne-Again SHell (что может переводится как «перерожденный шел», или «Снова шел Борна(создатель sh)»), самый популярный командный интерпретатор в юниксоподобных системах, в особенности в GNU/Linux. Ниже приведу ряд встроенных команд, которые мы будем использовать для создания своих скриптов.

break выход из цикла for, while или until

continue выполнение следующей итерации цикла for, while или until

echo вывод аргументов, разделенных пробелами, на стандартное устройство вывода

exit выход из оболочки

export отмечает аргументы как переменные для передачи в дочерние процессы в среде

hash запоминает полные имена путей команд, указанных в качестве аргументов, чтобы не искать их при следующем обращении

kill посылает сигнал завершения процессу

pwd выводит текущий рабочий каталог

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

return заставляет функцию оболочки выйти с указанным значением

shift перемещает позиционные параметры налево

test вычисляет условное выражение

times выводит имя пользователя и системное время, использованное оболочкой и ее потомками

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

unset вызывает уничтожение переменных оболочки

wait ждет выхода из дочернего процесса и сообщает выходное состояние.

1. Любой bash-скрипт должен начинаться со строки:

в этой строке после #! указывается путь к bash-интерпретатору, поэтому если он у вас установлен в другом месте(где, вы можете узнать набрав whereis bash) поменяйте её на ваш путь.

2. Коментарии начинаются с символа # (кроме первой строки).

3. В bash переменные не имеют типа (о них речь пойдет ниже)

Переменные и параметры скрипта

Приведу как пример небольшой пример, который мы разберем:

#указываем где у нас хранится bash-интерпретатор

parametr1=$1 #присваиваем переменной parametr1 значение первого параметра скрипта

script_name=$0 #присваиваем переменной script_name значение имени скрипта

Читайте также:  Kaspersky security center linux install

echo «Вы запустили скрипт с именем $script_name и параметром $parametr1» # команда echo выводит определенную строку, обращение к переменным осуществляется через $имя_переменной.

echo ‘Вы запустили скрипт с именем $script_name и параметром $parametr1’ # здесь мы видим другие кавычки, разница в том, что в одинарных кавычках не происходит подстановки переменных.

exit 0 #Выход с кодом 0 (удачное завершение работы скрипта)

Результат выполнения скрипта:

ite@ite-desktop:~$ ./test.sh qwerty

Вы запустили скрипт с именем ./test.sh и параметром qwerty

Вы запустили скрипт с именем $script_name и параметром $parametr1

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

$DIRSTACK — содержимое вершины стека каталогов

$EDITOR — текстовый редактор по умолчанию

$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя, в то время как.

$UID — . содержит реальный идентификатор, который устанавливается только при логине.

$FUNCNAME — имя текущей функции в скрипте.

$GROUPS — массив групп к которым принадлежит текущий пользователь

$HOME — домашний каталог пользователя

$HOSTTYPE — архитектура машины.

$LC_CTYPE — внутренняя переменная, котороя определяет кодировку символов

$OLDPWD — прежний рабочий каталог

$PATH — путь поиска программ

$PPID — идентификатор родительского процесса

$SECONDS — время работы скрипта(в сек.)

$# — общее количество параметров переданных скрипту

$* — все аргументы переданыне скрипту(выводятся в строку)

$@ — тоже самое, что и предыдущий, но параметры выводятся в столбик

$! — PID последнего запущенного в фоне процесса

Условные операторы, думаю, знакомы практически каждому, кто хоть раз пытался на чем-то писать программы. В bash условия пишутся след. образом (как обычно на примере):

source=$1 #в переменную source засовываем первый параметр скрипта

dest=$2 #в переменную dest засовываем второй параметр скрипта

Читайте также:  What is red hat enterprise linux server

if [[ «$source» -eq «$dest» ]] # в ковычках указываем имена переменных для сравнения. -eq — логическое сравнение обозначающие «равны»

then # если они действительно равны, то

echo «Применик $dest и источник $source один и тот же файл!» #выводим сообщение об ошибке, т.к. $source и $dest у нас равны

exit 1 # выходим с ошибкой (1 — код ошибки)

else # если же они не равны

cp $source $dest # то выполняем команду cp: копируем источник в приемник

fi #обозначаем окончание условия.

Результат выполнения скрипта:

ite@ite-desktop:~$ ./primer2.sh 1 1

Применик 1 и источник 1 один и тот же файл!

ite@ite-desktop:~$ ./primer2.sh 1 2

Структура if-then-else используется следующим образом:

В качестве команд возвращающих код возврата могут выступать структуры [[ , [ , test, (( )) или любая другая(или несколько) linux-команда.

test — используется для логического сравнения. после выражения, неоьбходима закрывающая скобка «]»

[[ — расширенная версия «[» (начиная с версии 2.02)(как в примере), внутри которой могут быть использованы || (или), & (и). Долна иметь закрывающуб скобку «]]»

для построения многоярусных условий вида:

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

Условия. Множественный выбор

Если необходимо сравнивать какоую-то одну переменную с большим количеством параметров, то целесообразней использовать оператор case.

echo «Выберите редатор для запуска:»

echo «1 Запуск программы nano»

echo «2 Запуск программы vi»

echo «3 Запуск программы emacs»

read doing #здесь мы читаем в переменную $doing со стандартного ввода

/usr/bin/nano # если $doing содержит 1, то запустить nano

/usr/bin/vi # если $doing содержит 2, то запустить vi

/usr/bin/emacs # если $doing содержит 3, то запустить emacs

*) #если введено с клавиатуры то, что в case не описывается, выполнять следующее:

echo «Введено неправильное действие»

esac #окончание оператора case.

Выберите редатор для запуска:

После выбор цифры и нажатия Enter запуститься тот редактор, который вы выбрали(если конечно все пути указаны правильно, и у вас установлены эти редакторы 🙂 )

Читайте также:  Linux плеер для аудиокниг

Прведу список логических операторв, которые используются для конструкции if-then-else-fi:

! #отрицание логического выражения

Источник

Справочный материал / Bash-скрипты Теоретическая информация

Linux — это операционная система, являющаяся одним из вариантов (клонов) операционной системы типа Unix. В своем первоначальном виде она была создана Линусом Торвальдсом (Linus Torvalds) как версия ОС UNIX для IBM-совместимых персональных ЭВМ. При этом Торвальдс опубликовал исходные коды своей системы и к развитию системы подключилось большое число независимых разработчиков. На всем протяжении своего развития разработка ведется в соответствии с требованиями международного стандарта на UNIX-совместимые системы IEEE POSIX. В настоящее время Linux используется как в качестве серверной ОС, так и на сетевых рабочих станциях или персонrouyальных компьютерах. Под операционную систему Linux существует множество приложений, предназначенных как для домашнего использования, так и для полностью функциональных рабочих станций UNIX и серверов Internet.

Некоторые особенности Linux

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

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

  • ядро построено по модульному принципу
  • на одном компьютере может быть установлено сразу несколько ядер
  • разработка ядра Linux управляется централизовано

Источник

Оцените статью
Adblock
detector