Написание bash-скриптовShell - это командная оболочка. Но это не просто промежуточное звено между пользователем и операционой системой, это еще и мощный язык программирования. Программы на языке shell называют сценариями, или скриптами. Фактически, из скриптов доступен полный набор команд, утилит и программ UNIX. Если этого недостаточно, то есть внутренние команды shell - условные операторы, операторы циклов и пр. В начале написания имеется необходимость явно указать интерпретатору команд директорию, из которой Bash будет вызван при запуске скрипта и сам его "загрузчик". Для этого наберем следующую команду в терминале:
Каждый файл сценария начинается с последовательности #!, это указывает системе, какой интерпретатор следует использовать для исполнения сценария. Это двухбайтовая последовательность, или - специальный маркер, определяющий тип сценария. Более точно, он определяет интерпретатор, который вызывается для исполнения сценария, это может быть командная оболочка (shell), иной интерпретатор или утилита. #!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/tcl #!/bin/sed -f #!/usr/awk -f После указания пути к интерпретатору записывается последовательность команд. Для примера создадим скрипт с именем example.sh следующего содержания (после символа # пишутся комментарии)
При объявлении переменной знак $ перед ее обозначением не ставится. Скрипт готов, теперь необходимо его запустить. Переходим в директорию, в которой был создан наш example.sh и сделаем файл исполняемым (иначе скрипт не сможет запуститься!):
Права записываются сразу для трёх типов пользователей: владельца-пользователя файла, пользователей, входящих в группу-владелец и для прочих пользователей. Аргумент команды chmod, задающий разрешения, может быть записан в двух форматах: в числовом и в символьном. Для понимания сути задания прав в Unix-like системах, нужно знать представление чисел в восьмеричной и двоичной системах счисления
Пример символьной записи: 'rwxr-xr-x'. Примером числовой записи может служить '755', которая эквивалентна записанной выше строковой записи: каждое право имеет числовой код и может быть задано вручную: § 400 — владелец имеет право на чтение; § 200 — владелец имеет право на запись; § 100 — владелец имеет право на выполнение; § 40 — группа имеет право на чтение; § 20 — группа имеет право на запись; § 10 — группа имеет право на выполнение; § 4 — остальные имеют право на чтение; § 2 — остальные имеют право на запись; § 1 — остальные имеют право на выполнение. Суммировав эти коды можно получить символьную запись. Например, chmod 444 {имя файла}: 400+40+4=444 — все имеют право только на чтение. Помимо стандартных 'rwx' значений команда CHMOD осуществляет ещё управление битами SGID, SUID и T. Установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно. Для SUID — вес 4000, а для SGID — 2000. Пример chmod 4555 {имя файла} — все имеют право на чтение и выполнение, но запускаться файл на исполнение будет с правами владельца. Для директории: установка SGID приведёт к установке принадлежности каждого нового создаваемого файла к той же группе, к которой принадлежит сама директория, а не к основной группе владельца, как это происходит по умолчанию. SUID для директории не имеет смысла. t-бит используется с директориями. Когда t-бит для директории не установлен, файл в данной директории может удалить любой пользователь, имеющий доступ на запись к данному файлу. Устанавливая t-бит на директорию, мы меняем это правило таким образом, что удалить файл может только владелец этого файла. Следуя приведённой выше кодировке, t-бит имеет вес 1000. Команда > перезаписывает файл, команда >> добавляет информацию в конец файла. Сохраним значение переменной в файл. Для этого создадим файл
Запишем в него
В данном случае в конец файла добавляем содержимое переменной $STRING. Отобразить содержимое файла можно следующим образом
|