Элементарно, Ватсон! Даже моя кошка с этим справится. Что это может дать? А вот нужно вам, допустим, несколько раз проделать однотипную, рутинную работу и что... да, многие юные пользователи будут копировать/запускать программы/удалять ручками. Но ведь у любого набора однотипых действий есть алгоритм, который можно просто записать и сделать исполняемым скриптом, а всё остальное он сделает за вас.
Что нужно знать для создания самого простого скрипта? Команды, которые вы будете ему отдавать. В примере ниже рассмотрим скрипт автообновления gentoo linux, но будьте аккуратны --- скрипт не предназначен для повседневного использования, а приводится лишь для объяснения, он не охватывает все возможные варианты "выхлопа" emerge, а посему не рекомендуется к использованию.
Далее сам скрипт.~update.sh~
#!/bin/bash
emerge --sync &&
x=`emerge -pvuND world | grep python` & echo "please, wait"
emerge -uND world &&
emerge -av --depclean > ~/depclean.txt
emerge --depclean
if [ $x != 0 ];
then
revdep-rebuild && python-updater
else
revdep-rebuild
fi
echo -n "update config? "
read u
if [ $u == "y" ] || [ $u == "yes" ];
then
etc-update
else
echo "Bye!"
fi
Теперь разберём, что же всё это значит.
emerge --sync - синхронизируемся с деревом portage
&& - двойной амперсанд указывает на то, что следующая команда не будет выполнена, если предыдущая завершилась неудачно. Применительно к нашему скрипту это означает, что если синхронизация по каким-то причинам не произошла, следующая команда не будет выполнена.
& - одинарный амперсанд - интерпретатор не дожидается завершения команды, выполнение программы происходит в фоновом режиме
без амперсанда - все команды выполняются последовательно, одна за другой
x=`emerge -pvuND world...` - просмотреть пакеты, которые являются претендентами на обновление и ежели среди них есть python (иначе говоря, если переменная не пуста), то выполнить revdep-rebuild && python-updater. В противном случае просто revdep-rebuild.
emerge -uND world && - обновление мира. В случае успешного обновления (без жёстких блокировок) записать пакеты-претенденты на удаление в файл depclean.txt на случай, если что-то пойдёт не так и нужно будет взглянуть обновление какого пакета могло вызвать проблему.
emerge --depclean - удалить ставшие не нужными пакеты
echo -n "update config? " - предложить обновить файлы конфигурации. При нажатии "y" или вводе "yes" запустить команду etc-update.
Теперь сделаем скрипт исполняемым:
$ cmod +x update.sh
Можно запускать. Это всего лишь пример. Подобным образом вы можете делать куда более полезные скрипты.
Ну и чтобы не разочаровывать более искушённого читателя, которому мало такой простой операции как представленная выше, выкладывается небольшая книжеца, где всё прекрасно описано.
ПРОГРАММИРОВАНИЕ НА Shell UNIX.pdf
0 коммент.: (+add yours?)
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.