- 論壇徽章:
- 1
|
出處:Unix愛好者家園unix-cd.com
接觸過UNIX的人都知道,在shell提示符下,用戶可以同UNIX核心進(jìn)行對(duì)話。shell的作用類似于早期的DOS下COMMAND.COM程序,但其內(nèi)容較COMMAND.COM豐富得多。shell還是一種程序設(shè)計(jì)語言。利用UNIX OS本身的shell對(duì)UNIX命令加以改進(jìn),就是其中的一種方法。本文以format和tar兩條命令為例進(jìn)行了嘗試,發(fā)現(xiàn)這種方法簡(jiǎn)單且實(shí)用。
一、格式化命令format的改進(jìn)
format命令格式:format[-n][-v][-f][-q][device][-i interle
ave]
1.改進(jìn)前的一般使用方法
$format /dev/rfd0135ds18 〈Enter〉
/* 對(duì)A盤進(jìn)行格式化 */
$format /dev/rfd196ds15 〈Enter〉
/* 對(duì)B盤進(jìn)行格式化 */
$format 〈Enter〉/* 對(duì)/etc/default/format文件中定義的缺省盤進(jìn)行格式化 */
2.用Bourne shell對(duì)format進(jìn)行改進(jìn)
$cat fdformat 〈enter〉
getyn() /* shell函數(shù) */
{
while read yn
do
case $yn in
[yY]) return 0;;
[nN]) return 1;;
*) break;;
esac
done
}
fd() /* shell函數(shù) */
{
echo 請(qǐng)輸入軟盤的規(guī)格:\(0-代表1.44MB\)\(1-代表1.2MB\): "
\c"
read floppy
if test $floppy -eq 0
then DEVICE=/dev/rfd0135ds18
FD=A
else DEVICE=/dev/rfd196ds15
FD=B
fi
}
fd
clear
echo "請(qǐng)將軟盤插入$FD驅(qū)動(dòng)器中,準(zhǔn)備好后按回車鍵!!"
while
getyn
do
format $DEVICE
echo " ******還需格式化下一張軟盤(y/n)? \c"
done
$ sh -v fdformat 〈Enter〉
/* 對(duì)shell程序的全部執(zhí)行過程進(jìn)行跟蹤 */
$ chmod u+x fdformat 〈Enter〉
/* 將fdformat成為可執(zhí)行的命令 */
改進(jìn)后的fdformat命令的使用易用性強(qiáng),只需在提示符下鍵盤輸入fdformat并回車,再按提示進(jìn)行操作即可,而且還能連續(xù)進(jìn)行格式化操作。
二、文件歸檔命令tar的改進(jìn)
tar命令格式:tar[key][files]
常用的key值有:x、c、u、t、v、n、f、w等。
1.利用tar顯示軟盤信息
(1) 改進(jìn)前的一般使用方法
$ tar tvnf /dev/rfd0135ds18 〈Enter〉
/* 顯示A驅(qū)動(dòng)器信息 */
$ tar tvnf /dev/rfd196ds15 〈Enter〉
/* 顯示B驅(qū)動(dòng)器信息 */
通過/ect/default/tar文件的定義,上述命令還可按下列方法進(jìn)行:
$ tar tv6 〈Enter〉
$ tar tv3 〈Enter〉
總之,要使用好tar命令,必需記住x、c、u、t、v、n、f等選擇項(xiàng)。
(2)用Bourne shell對(duì)tar命令進(jìn)行改進(jìn)
$ cat dirfd 〈Enter〉
fd
echo "請(qǐng)將軟盤插入$FD驅(qū)動(dòng)器中,關(guān)好小門!!"
sleep 2
clear
tar tvnf $DEVICE
sleep 5
$ sh -v dirfd 〈Enter〉
$ chmod u+x dirfd 〈Enter〉
改進(jìn)后,無需再詳記選擇項(xiàng)。
2.利用tar命令讀寫磁盤
(1)改進(jìn)前的一般使用方法
$ pwd 〈Enter〉
/usr/jinning
$ tar uvnf /dev/rfd0 unixtext 〈Enter〉
/* 將當(dāng)前目錄下的unixtext寫到A驅(qū)動(dòng)器中 */
$ tar xvnf/dev/rfd0 〈Enter〉
/* 將軟盤內(nèi)容讀到當(dāng)前目錄 */
(2)用Bourne shell改進(jìn)
$ cat writefd 〈Enter
echo 按回車鍵后繼續(xù)……
while getyn
do
clear
echo 現(xiàn)在的工作目錄是:′pwd′
echo
echo 輸入待拷備的路徑和文件名\(如:\/usr\/bd1996\):"\c"
read file
echo
fd
echo 正在寫盤,請(qǐng)稍候……
tar uvnf $DEVICE $file
echo
echo
echo "****拷備結(jié)束!繼續(xù)嗎?(y/n)\c"
done
$ sh -v readfd 〈Enter〉
$ chmod u+x readfd 〈Enter〉
$ cat readfd 〈Enter〉
echo 當(dāng)前工作目錄為:′pwd′
echo
echo 將當(dāng)前工作目錄改變?yōu)?"\c"
read dir
cd $dir
echo
echo 當(dāng)前目錄已改為:`pwd'
echo
fd
echo 正在讀盤,請(qǐng)稍候……
tar xvnf $DEVICE
echo ****拷貝完成!!!
sleep 1
echo
$ sh -v writefd 〈Enter〉
$ chmod u+x writefd 〈Enter〉
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/31/showart_520205.html |
|