快速业务通道

对话 UNIX: 使用 fish全攻略

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-11

Friendly Interactive Shell(fish)对于 UNIX 新手和专家都很适合

Friendly Interactive Shell(fish)很容易使用.它的语法、上下文相关的帮助和颜色编码的命令行界面(CLI)显著简化了 UNIX? 的使用,减轻了脚本编程的负担.

英语是一种令人困惑的语言.例如,请考虑 moon 和 good 这两个单词.对外行人而言,这两个单词似乎应该是押韵的,但是前者的读音是 /mun/(根据 International Pronunciation Alphabet),而后者的读音是 /good/.似乎英语中的惟一规则就是例外.

UNIX shell 同样令人困惑.例如,在 Bourne shell(和大多数常用的 UNIX shell)中,''$var''、"$var" 和 `$var` 看起来相似,但是它们会产生很不一样的结果.(在本文中的 shell 示例中,每个 CLI 前面都加上使用的 shell 的名称和命令编号).

bash-1) # Demonstrate the differences between single-, double-, and back quotes

bash-2) var=ls

bash-3) echo ''$var''

$var

bash-4) echo "$var" 

ls

bash-5) echo `$var`

Rakefile app bin components config db

    doc lib log patches public script src

    test tmp vendor

在上面的命令序列中,把变量 var 设置为两字母的字符串 ls.在第一个 echo 命令中,单引号禁止解释此变量,因此会按原样显示引号中的文本,即四字母的字符串 $var.在第 4 行代码中,双引号会解释此变量,结果是字符串 ls.,反撇号解释变量并作为子 shell 运行中间结果.因此,`$var` 产生中间字符串 ls,它作为 shell 命令运行,生成当前目录的内容列表.

当然,这三种操作符(单引号、双引号和反撇号)都有合法的用途,但是与英语中的例外一样,记住和掌握这些细微差异很令人头疼.为了进一步证明这一点,请问:$var 和 "$var" 之间有什么差异?(提示:假设 $var 包含空格.)

bash-1) # Create three files and try to remove two

bash-2) touch three two one

bash-3) var="one two"

bash-4) rm "$var"

rm: one two: No such file or directory

bash-5) rm $var

bash-6) ls

three

如果一个变量包含空格,双引号会按原样把变量展开为一个 参数.否则,变量中的任何空格都被解释为参数分隔符.

shell 语法很令人头疼.这很糟糕,它使 CLI(UNIX 最强大的特性之一)更难掌握.上面这样的不一致问题甚至会给 UNIX 老手带来困扰.

好在,fish (Friendly Interactive Shell) 的出现改变了这种混乱局面,它提供简明的语法,显著改善了用户体验.与其他 shell 一样,fish 也提供重定向、快捷方式、globbing(即通配符的展开)、子 shell、制表符补全和变量.但是,与其他 shell 不同,fish 还提供颜色编码的 CLI、功能丰富的命令行编辑器和大量文档.

另外,对于执行任何操作,fish 只提供一种方式,这非常明智.如果一个 UNIX 实用程序能够完成某一任务,fish 就不会通过内置命令重复提供此特性.例如,fish 使用系统范围的应用程序 /bin/kill 终止进程.(与之相反,Bourne shell 通过一个内置应用程序实现了它自己的 kill 版本.可以在 Bourne shell 命令提示上输入 /bin/kill 来访问此版本).fish 尽可能优先考虑简单性而不是灵活性,这显著简化了它的使用方法.

下面,我们来安装 fish 并体验它的一些特性.

获取 fish

fish 是由 Axel Liljencrantz 创建的一个开放源码项目,采用的许可协议是 GNU General Public License, version 2.到编写本文时,fish 的最新版本是 1.23.0,此版本于 2008 年 1 月 13 日发布.

如果使用 UNIX 或 UNIX 类系统(比如 Linux? 或 Mac OS X),那么应该很容易在您的系统上从源代码构建 fish.下面是构建步骤,见 清单 1:

1.下载程序的最新源代码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号