分享

Bourne Shell及shell编程 4

 我是山芋 2010-11-09
4. Shell的定制
 通常使用shell的定制来控制用户自己的环境比如改变shell的外观(提
示符)以及增强
 自己的命令
 
(1)通常环境变量来定制shell
 通常改变环境变量可以定制shell的工作环境shell在处理信息时会参
考这些环境变量
 改变环境变量的值在一定程度上改变shell的操作方式比如改变命令
行提示符
 
 .使用IFS增加命令行分隔符
 默认状态下shell的分隔符为空格制表符及换行符但可以通过改变
IFS的值加入自
 的分隔符如下所示
 
 
 $ IFS=":"
 $ echo:Hello:my:Friend
 Hello my Friend
 
(2)加入自己的命令及函数
 如下程序
 #Directory and Prompt change program
 #Syntax: chdir directory
 
 if [ ! -d "$1" ]
 then
 echo "$1 is not a directory"
 exit 1
 fi
 
 cd $1
 PS1=`pwd`$
 export PS1
 
 $ chdir /usr/home/teresa
 $

 
 但此程序在执行时系统提示符并不会改变因为此程序是在子shell中执
行的因此其变
对当前shell并无影响要想对当前shell起作用最好是将此作为函数写在
自己的.profile
或建立自己的个人函数文件.persfuncs
 
 #Personal function file persfuncs
 
 chdir()
 {
 #Directory and Prompt change program
 #Syntax: chdir directory
 if [ ! -d "$1" ]
 then
 echo "$1 is not a directory"
 exit 1
 fi
 
 cd $1
 PS1=`pwd`$
 export PS1;
 }
 
 再执行
 $ . .persfuncs
 $ chdir temp
 /home/hbbwork/temp$
 
 也可在自己的.profile文件中用 . .persfuncs调用.persfuncs.
 
 说明在bash/tcsh中已经使用别名相对而言别名比此方法更为方便

 
 
5. 有关shell的专门讨论
(1)shell程序的调试
 切记程序员人总是会犯错误的而计算机是不会错的
 使用-x进行跟踪执行执行并显示每一条指令
 
(2)命令组

 用小括号将一组命令括起来则这些命令会由子shell来完成而{command_list;}则在
 前shell中执行这两者的主要区别在于其对shell变量的影响子shell执行的命令不会
 影响当前shell中的变量
 
 $ NUMBER=2
 $ (A=2;B=2;NUMBER=`expr $A + $B`; echo $NUMBER)
 4
 $ echo $NUMBER
 2
 $ { A=2;B=2;NUMBER=`expr $A + $B`; echo $NUMBER; }
 4
 $ echo $NUMBER
 4
 
 
总结
 在本章中讲述了Bourne Shell的基本知识,使用shell变量shell script
基础这些概
 对于理解学习Korn Shell, csh以及其他script编程都是非常有用的
 
 很多OS都有不少语言及一些script功能但很少有象UNIX SHELL这
样灵活强大的script
 本语言能力
 
 对于系统管理员或程序员来说熟练地使用shell script将对日常工作(系
统维护及管理
)
 非常有用如果你想作一个合格的系统管理员强烈建议你进一步深入
的了解和使用
 shell.
 
 另外对于系统管理员来说PERL也是一个必不可少的script编程语
言尤其是对于处
 文本格式的各种文件PERL具有shell, awk, sed, grep等的功能但
使用起来更为灵活
 
 功能也更强大大家可以参考Perl By Examples"来学习和使用PERL

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多