Zsh 的强大特性

重定向功能

示例:

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

补全类型控制

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

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

计算器

zsh 可以当作计算器使用

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

命令替换

  1. # bash 中使用这种形式
  2. $ emacs `find . -name "*.html"`
  3. # zsh 同样支持,并可以使用以下形式
  4. $ emacs $(ls **/*.html)
  5.  
  6. # zsh 还可以将命令结果生成临时文件,并返回文件名
  7. #支持更复杂的输出和过滤。例如,比较 new/old/ 两个文件夹的内容
  8. $ diff =(ls new/) =(ls old/)
  9.  
  10. #查看生成的临时文件
  11. ls =()