if;[;-f;$1;];;then
user_perms=";"
group_perms=";"
other_perms=";"
user_perms=`ls;-l;$1;|;awk;"{print;$1;}";|;cut;-b3-3;`
group_perms=`ls;-l;$1;|;awk;"{print;$1;}";|;cut;-b6-6;`
other_perms=`ls;-l;$1;|;awk;"{print;$1;}";|;cut;-b9-9;`
if;[;"$user_perms";=;"w";-o;"$group_perms";=;"w"
-o;"$other_perms";=;"w";];;then
print;"nError:;The;file;is;writable.;Aborting;$cmdname;......"
print;";;;;;;;You;should;either;backup,;scommit;or;delete;the;file;and"
print;";;;;;;;try;$cmdname;againn"
exit
fi
fi
cur_dir=`pwd`
#echo;$cur_dir
len=${#hme}
len=$(($len; ;2))
#echo;$len
subdir=`;echo;$cur_dir;|;cut;-b;$len-2000;`
#echo;$subdir
if;[;"$subdir";=;"";];;then
fdname=$1
else
fdname=$subdir"/"$1
fi
#;Move;the;file
touch;$1;2>/dev/null
mv;-f;$1;$1.$bkextn
#;Create;subshell
(
cd;$hme
#echo;$fdname
#;Use;-A;option;to;clear;all;sticky;flags
if;[;"$FLAG1";=;"";];;then
cvs;-r;checkout;-A;$fdname
else
cvs;-r;checkout;-A;-$FLAG1;$OARG1;$fdname
fi
)
#pwd
if;[;-f;$1;];;then
print;"nREAD-ONLY;copy;of;the;file;$fdname;obtained."
print;"Done;$cmdname"
#print;"nTip;(Usage):;$cmdname;n"
fi
--------------------------------------------------------------------------------
4.2;sedit;
注意;:;Korn;shell;/bin/ksh;在你从Linux;CD-ROM;安装;pdksh*.rpm;时就会产生;
请把他存成一般文字档并改变存取权限;chmod;a rx;
--------------------------------------------------------------------------------
#!/bin/ksh
#;CVS;program;sedit
#;Program;to;check;out;the;file;from;CVS;read/write;mode;with;locking
cmdname=`basename;$0`
Usage()
{
#;;;;;;;print;"nUsage:;$cmdname;[-r;revision_number];[-F];"
#;;;;;;;print;"The;options;-r,;-F;are;optional;"
#;;;;;;;print;"The;option;-F;is;FORCE;edit;even;if;file;is;"
#;;;;;;;print;"locked;by;another;developer"
print;"nUsage:;$cmdname;[-r;revision_number];"
print;"The;options;-r;are;optional;"
print;"For;example;-;"
print;";$cmdname;-r;1.1;foo.cpp"
print;";$cmdname;foo.cpp;"
#;;;;;;;print;";$cmdname;-F;foo.cpp;"
print;";"
}
#;Command;getopt;will;not;supported;in;next;major;release.;
#;Use;getopts;instead.;
#while;getopts;r:F;ii
while;getopts;r:;ii
do
case;$ii;in
r);FLAG1=$ii;;OARG1="$OPTARG"
#;;;;;;;F);FLAG2=$ii;;OARG2="$OPTARG"
?);Usage;;exit;2
esac
done
shift;`;expr;$OPTIND;-;1;`
#echo;FLAG1;=;$FLAG1;,;OARG1;=;$OARG1
if;[;$#;-lt;1;];;then
Usage
exit
fi
hme=`;echo;$HOME;|;cut;-f1;-d";";;`
if;[;"$hme";=;"";];;then
print;"nError:;$HOME;is;not;set!!n"
exit
fi
bkextn=sedit_bak
cur_dir=`pwd`
#echo;$cur_dir
len=${#hme}
len=$(($len; ;2))
#echo;$len
subdir=`;echo;$cur_dir;|;cut;-b;$len-2000;`
#echo;$subdir
if;[;"$subdir";=;"";];;then
fdname=$1
else
fdname=$subdir"/"$1
fi
#;If;file;is;already;checked;out;by;another;developer....
cvs_root=`;echo;$CVSROOT;|;cut;-f1;-d";";;`
if;[;"$cvs_root";=;"";];;then
print;"nError:;$CVSROOT;is;not;set!!n"
exit
fi
cldir=$CVSROOT/$subdir/Locks
mkdir;$cldir;2>/dev/null
rcsfile=$CVSROOT/$subdir/$1,v
#echo;$rcsfile
if;[;!;-e;$rcsfile;];;then
print;"nError:;File;$1;does;not;exist;in;CVS;repository!!n"
exit
fi
#;Get;the;tip;revision;number;of;the;file....
#;Use;tmpfile;as;the;arg;cannot;be;set;inside;the;sub-shell
tmpfile=$hme/sedit-lock.tmp
rm;-f;$tmpfile;2>/dev/null
if;[;"$FLAG1";=;"";];;then
(
cd;$hme
cvs;log;$fdname;|;head;-6;|;grep;head:;|;awk;"{print;$2}";>;$tmpfile;
)
OARG1=`cat;$tmpfile`
rm;-f;$tmpfile;2>/dev/null
fi
lockfile=$cldir/$1-$OARG1
#if;[;-e;$lockfile;-a;"$FLAG2";=;"";];;then
if;[;-e;$lockfile;];;then
print;"nError:;File;$1;Revision;$OARG1;already;locked;by;another;developer;!!"
推荐阅读
- 1 CVS RCS HOWTO 原始程式码版本控制系统
- Linux 2.4 NAT HOWTO
- 5 Ethernet HOWTO Linux以太网-HOWTO 电缆、同轴电缆、双绞线
- The Linux Bootdisk HOWTO 中译版
- Beowulf 中文HOWTO
- Sound Blaster AWE 32/64 HOWTO 如何在Linux设定声卡
- Soundblaster 16 PnP Mini-Howto 如何在Linux设定16位P
- 新闻 Leafsite mini-HOWTO
- 使用LILO做为Win95+WinNT+Linux多重开机 mini-HOWTO
- LINUX modules 模块安装 MINI-HOWTO
