Zsh 的强大特性
优质
小牛编辑
143浏览
2023-12-01
重定向功能
示例:
重定向 stdout 和 stderr 到 file | command |& >file |
同时重定向到多个文件 | command >file.1 >file.2 |
补全类型控制
compctl -g '*.tar.gz *.gz*.tgz' + -g '*(-/)' tar zxvf
tar zxvf [tab] , 候选菜单中只出现扩展名为 .tar.gz .gz .tgz 的文件。下面代码供参考,extract [tab]解压缩,补全的类型为压缩包,
compctl -g '*.tar.bz2 *.tar.gz *.bz2 *.gz *.jar *.rar *.tar *.tbz2 *.tgz *.zip *.Z' + -g '*(-/)' extract extract() { if [[ -z "$1" ]] ; thenprint -P "usage: \e[1;36mextract\e[1;0m < filename >"print -P " Extract the file specified based on the extension" elif [[ -f $1 ]] ; thencase ${(L)1} in *.tar.bz2) tar -jxvf $1 ;; *.tar.gz) tar -zxvf $1 ;; *.bz2)bunzip2 $1 ;; *.gz) gunzip $1 ;; *.jar)unzip $1 ;; *.rar)unrar x $1 ;; *.tar)tar -xvf $1 ;; *.tbz2) tar -jxvf $1 ;; *.tgz)tar -zxvf $1 ;; *.zip)unzip $1;; *.Z) uncompress $1 ;; *)echo "Unable to extract '$1' :: Unknown extension"esac elseecho "File ('$1') does not exist!" fi }
计算器
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 =()