Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Linux all на 100% - Маслаков В.

Маслаков В. Linux all на 100% — Питер , 2009. — 331 c.
ISBN 978-5-388-00757-5
Скачать (прямая ссылка): linuxna1002009.pdf
Предыдущая << 1 .. 49 50 51 52 53 54 < 55 > 56 57 58 59 60 61 .. 116 >> Следующая

-gm имя Программа скажет «доброе утро» человеку с заданным именем
-да имя Программа отобразит «добрый день» человеку с заданным именем
-ge имя Программа скажет «добрый вечер» человеку с заданным именем
-he Программа отобразит «привет*
-dg Программа скажет «сегодня солнечный день»
-dr Программа отобразит «сегодня пасмурный день-
-y Программа скажет «да»
-n Программа отобразит «нет»
Понадобится переменная $#, чтобы узнать количество параметров. Лучшее решение в данном случае - связка из операторов while и case. Посмотрим, как это работает:
#!/bin/bash
while [ S# -gt О J ; do case "$1“ in
-grn) echo "Доброе утро. $2". shift 2 ..
Глава 5. Основы shell-программирования
-да) echo "Добрый день. $2”. shift 2 ..
-ge) echo "Добрый вечер. $2“: shift 2
-he) echo "Привет": shift
-dg) echo "Сегодня солнечный день": shift ::
-dr) echo "Сегодня пасмурный день": shift -у) echo "Да": shift ;
-n) echo "Нет": shift ;; esac
done
Теперь можно протестировать сценарий Запустим его с такими параметрами:
-да Foo -he -dg -у
В итоге получим следующий «диалог»:
Добрый лень. Foo Привет
Сегодня солнечный день Да
Ключевую роль в сценарии играет команда shift, которая сдвигает параметры. В этом случае отпадает необходимость держать переменную-счетчик и тем более вычислять, какой из параметров нужно рассмотреть.
Смещение должно производиться на столько параметров, сколько обрабатывается в данный момент (в случае -gm, -да и -де обрабатывается сразу два параметра).
Shell-программирование на практике
Рассмотрим интересную задачу. Как известно, когда вы работаете в консоли, понятия корзины в ней нет, то есть после удаления файла восстановить его проблематично (минимум, что придется применить, — это специальное программное обеспечение).
В связи с этим некоторые системные администраторы пользуются командными файлами, которые позволяют не удалять файл, а записать его в специальный каталог. Напишем такой файл.
Sheli-ирограммирование на практике
Сформулируем задачу. Командный файл будет рас но. южсн н катало! е / u - г / Ь i п, будет называться safe сгт п будет дос тупен для нснолнепия всем пользователям (хотя но желанию вы можете разрешить исполнять сто юлько для себя). Удаленные файлы он будет помещать в гнецна 1ьнын ката toi (например, /trash) вот-дельный подкаталог для каждого пользователя, чтобы обезопасить удаленные данные.
Удалять файлы будем с помощью ы «мадии nvv, которая может перемета п. <|>;tii. <ы из одного каталог а в другой.
Для удобства укажем два параметра: - -? . и -« J ..г тл для полной» удале-
ния своих удаленных файлов и полной очистки каталога аьй соошетствснно (последний параметр будет доступен только для суперпользователя) Создавать файл будем в несколько этапов.
Сначала напишем стандартную строку, в которой укажем предпочитаемый нпкр претагор команд:
#!/bin/bash
Права пользова гелей при работ е с программой бу ту i разграничивши'»! (выполнять некоторые операции сможет только суисрнользова гель), поэтому сразу определим имя текущею пользователя.
currentuser^'id -u -n‘
Необходимо проверить. cyiuecTвует ли ката тот 11 rai l., и котором будут находит ь ся все якобы удаленные файлы.
Помните, что эту операцию оможеч вы но ним к ю и.ко суперно. п>. юна ммь, так как запись в корневой каталог разрешена только ему З.т'ч ь же проверим имя ноль.«» вателя
if ! L -е /trash ] then
if ! [ ?current user = "root" I then
echo "Катапог /trash не найден” exit 1
f I
mk.dir /trash chirod a=rwx /trash
ft
Глава 5. Основы shell-программирования
Следующим шагом будет проверка наличия каталога текущего пользователя Если этого каталога нет, создадим его.
if 1 [ е /trash/$currentuser ] then
mkdir /trash/Jcurrentuser chmcd a=.u=rwx /trash/$currentuser
fi
Изменим права на доступ в новый каталог. Подготовительные операции завершены, пора выполнять какое-то действие
Для удобства введем переменную, в которой будем хранить параметры, переданные командному файлу. Это могут быть параметры для очистки корзины либо список файлов, которые требуется удалить.
params=f@
Здесь использован именно такой формат получения параметров - он удобен, и команда перемещения файлов поддерживает список файлов в качестве входного параметра.
Теперь проверим, не задал ли пользователь команд, в соответствии с которыми нужно очистить свою часть корзины либо корзину полностью.
if [ "Sparams" = "--clear" ] then
rm r -r -d /trash/$currentuser/* exit 0
else
if I "Sparams" = "--clearal1“ ]
I her'
if ! [ $currentuser - "root" ] then
echo "Вы не суперпользователь" exit 1
fi
rm -r -f -d /trash/* exit 0
fi
ft
Shell-программирование на практике
Обратите внимание, что если обнаружился специальный параметр, необходимо завершить работу командного файла после выполнения соответст вующси команды, иначе сценарий будет работать до команды перемещения файлов, что вызовет ошибку.
Далее команда перемещения файлов: mv f ?params /trash/?currentuser
Здесь использован параметр -f, чтобы перезаписывать в корзине файлы одина ковыми именами.
Объединив все части кода, вы получите рабочий алгоритм. Он, конечно, не идеален. Например, можно было сделать, чтобы удаляемые файлы сохранялись не в каталоге / trash, а в домашнем каталоге пользователя. При необходимости вы сможете внести нужные изменения самостоятельно.
Предыдущая << 1 .. 49 50 51 52 53 54 < 55 > 56 57 58 59 60 61 .. 116 >> Следующая