阅 读 文 章

FreeBSD Shell的高级功能

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(不详) | 时间:2007-07-07 | 浏览:人次 ]

由于 shell是Unix下用户最经常使用的界面,因此熟练掌握必然带来更高的工作效率。事实上,仍然有很多种技巧,能帮助用户更方便的使用shell。


1) 命令行使用技巧

一个重要的增强功能是 shell提供的命令行编辑功能,这包括能够使用上次执行过的指令(命令回溯),对已经输入的部分进行编辑等等。

注意: shell的这些增强功能是在最新版本(4.2之后)的系统中才加以添加的,因此不再需要额外安装tcsh或bash。新版的FreeBSD使用tcsh作为基本的csh,而sh的功能也得到了增强。如果是老版本的系统,则需要安装tcsh作为shell,或者安装bash,来获得这些增强功能。

然而,最新的 sh缺省情况下并没有打开这个功能,因此必须首先打开这个功能,当打开这个功能之后,就能使用方向键来回溯执行过的命令,并进行修改。

$ set -o emacs

$ set -o vi

按照习惯的不同,可以选择 vi风格的编辑方式或emacs风格的方式,而vi风格还能支持vi的键盘指令,即在按下Esc键之后,使用h、j、k、l四个键来移动光标和回溯命令,它的好处是不使用基本键盘之外的控制键,因而可以适用于任何终端设备,并且进行编辑时手不需离开基本键盘,熟练操作之后最为快捷。

最新版本的 csh,即tcsh,缺省就支持命令回溯,但也能使用不同的命令切换编辑风格:

% bind emacs

% bind vi

另一个重要的功能是可以为常用的命令设置别名,简化用户输入,例如:

$ alias ec= “ echo This is a alias ”

$ ec

This is a alias

csh用于方便用户操作的另一项能力是自动补全命令或文件名的功能,因为FreeBSD下的文件名可能很长,将它们全部输入比较麻烦。事实上可以输入部分名字,然后按Tab键(在vi风格下是连续两次按Esc键),shell将自动补全文件名的剩余部分。如果已经输入的这部分名字不能确定具体的命令或文件,那么shell只将能确定的部分补上,然后响铃通知使用者继续输入以明确具体的文件。

事实上即使在基本的 sh或csh下,也可以使用 “ * ” 等特殊字符,用模式匹配的方式来简化输入。

$ cd /usr/loca*

$ pwd

/usr/local

Unix中的多数程序都具备模式匹配的处理能力,而shell的模式匹配功能最为常用。shell可以使用这些特殊模式来配置多个文件,达到简化操作的目的。如果要熟练掌握Unix,必须掌握模式匹配。

2) 控制功能

Unix的shell不仅仅简单的接受输入指令并执行,它更强大的能力是能够根据条件解释执行输入指令。当然,sh和csh对于输入的解释语法有所不同,由于在系统中sh最为基本,以下以sh为例,简单介绍shell的控制功能。

最重要的功能之一是根据条件来判断是否需要完成某项工作。最简单的情况下,如果某个程序存在并可以执行,则执行执行这个程序,这种用法在启动脚本中十分常见。这需要使用逻辑“与”判断:

$ [ -x /usr/bin/echo ] && /usr/bin/echo “ the program echo is running! ”

the program echo is running!

与此相反的方式是,当条件不成立的时候执行程序,这需要逻辑“或”判断:

$ [ -f /tmp/somefiles ] || echo “ somefiles is missing! ”

somefiles is missing!

当然,无论哪一种逻辑判断形式,关键点是逻辑判断本身的语法。一般来讲,可以根据文件本身的属性进行判断,如上面例子中判断文件 ” -f ” 是否存在, ” -x ” 判断文件是否是执行程序,还可以判断是否为目录 ” -d ” ,等等。此外,还可以根据字符串来进行判断,判断两个字符串是否相同、甚至比较大小,以及进行数学判断等等,下面将在介绍其他控制方式时给出一些例子。

更详细的判断条件,可以 man test。事实上,判断语句中的括号[本身就是一个程序,就是test,这个程序根据后面的条件返回一定的结果。因此,完全可以直接根据一个程序的返回结果进行判断。
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 功能 高级 判断 使用 可以 is echo shell 循环 命令 文件

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.