LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3555|回复: 52

zsh

[复制链接]
发表于 2006-7-3 16:36:59 | 显示全部楼层 |阅读模式
这两天尝试了zsh,真是惊讶,功能之丰富有令人有在山阴道中行,目不暇接之感。

递归glob: grep pattern /path/to/dir/**/*.c,连find都省了。

可以和sh表现不同的word split: a="some words" touch $a, 不用双引号了。

浮点数运算: print $((10.0/3)), 3.3333333333333335

比如: set +o rmstarsilent,(默认),有了这个,前几天我也不会在家目录中来个rm /tmp/somedir * -f了

再如: set -o autocd, cd都可省略,直接输入目录就可进入

和sh不太一样的重定向:
比如: command |& >file, 同时重定向stdout和stderr到file, 当然也可以command 2>&1 | file
同时重定向到多个文件: command >file.1 >file.2

纠正拼写,比如当前目录下只有Documents子目录,但你输入了cd do,它会自动纠正为cd Documents

非常强大的行编辑器,甚至支持如多行编辑:
print line1,按esc, return, 输入print line2, return
line1
line2

zsh提供了很多可载入的模块,甚至包括一个ftp客户端系统。

zsh的提示符高度可定制,在我看来比bash更为简明,色彩不用ansi转义序列,直接用色彩名,zsh甚至还有提示符主题的概念,有prompt内建命令,载入promptinit模块后,可从多个提示符主题中选择。

等等,等等。

zsh在交互使用上,真是无与伦比。

我该考虑chsh -s /bin/zsh了。

那么zsh是否可替代bash,作为系统的/bin/sh呢,理论上应该可以,zsh可以模拟ksh, posix sh,所以现有的sh脚本可以在zsh下运行,不过好像没有什么发行版这么做。
 楼主| 发表于 2006-7-3 19:52:16 | 显示全部楼层
无奇不有,还有个zsh粉丝(第一次用这个词)的发行版,不过/bin/sh还是链接到bash,不那么名副其实。

http://www.grml.org/
回复 支持 反对

使用道具 举报

发表于 2006-7-4 01:46:48 | 显示全部楼层
zsh's completion is very powerful and pretty complex too. I think bash has recursive glob too, such as
  1. grep define /usr/include/*/*.h
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-4 11:01:44 | 显示全部楼层
bash似乎不支持递归glob吧,/usr/include/*/*.h能深入其下的每一层子目录吗。
回复 支持 反对

使用道具 举报

发表于 2006-7-5 00:45:38 | 显示全部楼层
Post by seamonkey
bash似乎不支持递归glob吧,/usr/include/*/*.h能深入其下的每一层子目录吗。

Try it, you will see.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-5 10:39:01 | 显示全部楼层
不,我不认为bash具有这个能力。
回复 支持 反对

使用道具 举报

发表于 2006-7-5 14:13:26 | 显示全部楼层
grep -R递归不是一样
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-5 14:18:02 | 显示全部楼层
有点不一样,比如递归寻找c文件内的字符串呢,grep就要配合find,recursive globbing的缺点是受参数长度的限制,find | xargs就没问题。
回复 支持 反对

使用道具 举报

发表于 2006-7-5 14:24:22 | 显示全部楼层
找C就grep -R pattern *.c呗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-5 14:27:50 | 显示全部楼层
_递归_不是一层目录。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表