Библиотека сайта rus-linux.net
supdate
Замечание: оболочка Korn /bin/ksh устанавливается инсталляцией pdksh*.rpm с компакт-диска дистрибутива Linux
Сохраните этот файл как текст и выполните для него "chmod a+rx".
#!/bin/ksh # CVS-программа supdate # Программа для обновления файла из CVS в режиме чтения/записи # Имя каждого файла составляется из 3 частей -- домашнего каталога, # подкаталога и имени файла. Полный путь -- $HOME/$subdir/$fname # В CVS сохраняется такая же структура каталогов (с помощью переменной # $subdir), поэтому в CVS мы будем иметь $CVSROOT/$subdir/$fname # В данной программе эти 4 переменные $HOME, $CVSROOT, $subdir и $fname # играют важную роль. Примеры их значений: # HOME=/home/aldev, subdir=myproject/src CVSROOT=/home/cvsroot # и fname=foo.cpp # Предупреждение: заключите значения переменных, содержащих пробелы # в двойные кавычки: "$HOME/$subdir", если subdir равен "some foo.cpp" cmdname=`basename $0` if [ $# -lt 1 ]; then print "\nВызов: $cmdname <файл>" exit fi # Двойные кавычки для защиты пробелов в $1 tmpaa="$1" # Проверка существования файла... if [ $# -gt 0 -a -f $tmpaa ]; then user_perms=" " group_perms=" " other_perms=" " user_perms=`ls -l $tmpaa | awk '{print $tmpaa }' | cut -b3-3 ` group_perms=`ls -l $tmpaa | awk '{print $tmpaa }' | cut -b6-6 ` other_perms=`ls -l $tmpaa | awk '{print $tmpaa }' | cut -b9-9 ` if [ "$user_perms" = "w" -o "$group_perms" = "w" \ -o "$other_perms" = "w" ]; then while : do print "\n$cmdname сделает резервную копию Вашего рабочего файла " print "$tmpaa в $tmpaa.supdate_bak перед выполнением слияния." print "Вы уверены в желании объединения изменений из" print -n "CVS-репозитория с Вашим рабочим файлом? <y/n> [n]: " read ans if [ "$ans" = "y" -o "$ans" = "Y" ]; then if [ -f $tmpaa.supdate_bak ]; then print "\nВнимание: файл $tmpaa.supdate_bak уже существует!!" print "Пожалуйста просмотрите файл $tmpaa.supdate_bak и удалите его," print "а затем повторно выполните эту команду $cmdname " print "Завершение $cmdname ...." exit else cp $tmpaa $tmpaa.supdate_bak break fi elif [ "$ans" = "n" -o "$ans" = "N" -o "$ans" = "" -o "$ans" = " " ]; then exit fi done fi fi if [ -d $tmpaa ]; then print "\nОбновление каталога недоступно, потому что CVS update" print "объединяет изменения из репозитория с Вашим рабочим каталогом." print "Поэтому укажите файл для обновления, как показано ниже: " print " Вызов: $cmdname <файл>" exit # cvs update else cvs update $tmpaa fi print "\n$cmdname удачно выполнен." print "\n\nСделана резервная копия исходного файла как $tmpaa.supdate_bak" print "\nПоэтому Ваш исходный файл СОХРАНЕН в $tmpaa.supdate_bak" print "\n\n" #print "\nTip (Usage): $cmdname <filename/directory name>\n" |