Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab1.doc
Скачиваний:
10
Добавлен:
12.04.2015
Размер:
79.36 Кб
Скачать

1.2 Написание bash-скриптов

Shell - это командная оболочка. Но это не просто промежуточное звено между пользователем и операционой системой, это еще и мощный язык программирования. Программы на языке shell называют сценариями, или скриптами. Фактически, из скриптов доступен полный набор команд, утилит и программ UNIX. Если этого недостаточно, то есть внутренние команды shell - условные операторы, операторы циклов и пр.

В начале написания имеется необходимость явно указать интерпретатору команд директорию, из которой Bash будет вызван при запуске скрипта и сам его "загрузчик". Для этого наберем следующую команду в терминале:

user@localhost:~$ which bash

/bin/bash

Каждый файл сценария начинается с последовательности #!, это указывает системе, какой интерпретатор следует использовать для исполнения сценария. Это двухбайтовая последовательность, или - специальный маркер, определяющий тип сценария. Более точно, он определяет интерпретатор, который вызывается для исполнения сценария, это может быть командная оболочка (shell), иной интерпретатор или утилита.

#!/bin/sh

#!/bin/bash

#!/usr/bin/perl

#!/usr/bin/tcl

#!/bin/sed -f

#!/usr/awk -f

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

Для примера создадим скрипт с именем example.sh следующего содержания (после символа # пишутся комментарии)

#!/bin/bash

# объявляем переменную STRING

STRING="Program work!"

# вывод на экран

echo $STRING

При объявлении переменной знак $ перед ее обозначением не ставится.

Скрипт готов, теперь необходимо его запустить. Переходим в директорию, в которой был создан наш example.sh и сделаем файл исполняемым (иначе скрипт не сможет запуститься!):

$ chmod +x example.sh

Права записываются сразу для трёх типов пользователей: владельца-пользователя файла, пользователей, входящих в группу-владелец и для прочих пользователей. Аргумент команды chmod, задающий разрешения, может быть записан в двух форматах: в числовом и в символьном.

Для понимания сути задания прав в Unix-like системах, нужно знать представление чисел в восьмеричной и двоичной системах счисления

пользователь

группа

остальные

7

5

5

111

101

101

rwx

r-x

r-x

u

g

o

Пример символьной записи: '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.

Команда > перезаписывает файл, команда >> добавляет информацию в конец файла.

Сохраним значение переменной в файл. Для этого создадим файл

>data.txt

Запишем в него

echo $STRING >> data.txt

В данном случае в конец файла добавляем содержимое переменной $STRING.

Отобразить содержимое файла можно следующим образом

cat data.txt

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]