Zsh 的强大特性

重定向功能

示例:

重定向 stdout 和 stderr 到 file command |& >file
同时重定向到多个文件 command >file.1 >file.2

补全类型控制

mpg123 [tab] , 候选菜单中只出现扩展名为 .mp3 .MP3 的文件:

zstyle ':completion:*:*:mpg123:*' file-patterns \
  '*.(mp3|MP3):mp3\ files *(-/):directories'
 
zstyle ':completion:*:*:ogg123:*' file-patterns \
  '*.(ogg|OGG):ogg\ files *(-/):directories'
      

计算器

zsh 可以当作计算器使用

#载入数学函数模块 可以进行一些比较高级的运算
#(也可以将此句写在配置文件中)
$ zmodload zsh/mathfunc   
#$((数学表达式)) 进行运算,使用 echo 显示结果
$ echo $(( sin(1/4.0)**2 + cos(1/4.0)**2 - 1 ))
  -1.1102230246251565e-16
$ echo $(( pi = 4.0 * atan(1.0) ))
  3.1415926535897931
$ echo $(( f = sin(0.3) ))
  0.29552020666133955
$ print $((1e12 * rand48()))
  847909677310.23413
$ print $(( rand48(seed) ))
  0.01043488334700271    

命令替换

# bash 中使用这种形式
$ emacs `find . -name "*.html"`
# zsh 同样支持,并可以使用以下形式    
$ emacs $(ls **/*.html)

# zsh 还可以将命令结果生成临时文件,并返回文件名    
#支持更复杂的输出和过滤。例如,比较 new/old/ 两个文件夹的内容        
$ diff =(ls new/)  =(ls old/)  

#查看生成的临时文件
ls =()