首页 > 互联资讯 > 网络资讯  > 

为什么说,zsh,是,shell,中的极品?

它相对与 bash,tcsh 等有什么优势呢?如果优势很突出的话可以直接只学 zsh 吗?关注者3,801被浏览1,692,478关注问题​写回答​邀请回答​好问题 50​5 条评论​分享​html{-webkit-scroll-padding-top:calc(52px + 2em);-moz-scroll-padding-top:calc(52px + 2em);-ms-scroll-padding-top:calc(52px + 2em);scroll-padding-top:calc(52px + 2em);-webkit-scroll-padding-bottom:56px;-moz-scroll-padding-bottom:56px;-ms-scroll-padding-bottom:56px;scroll-padding-bottom:56px;}.css-9hu0cu{width:1000px;}.css-124jo1g{box-sizing:border-box;margin:0;min-width:0;background-color:#F6F6F6;margin-top:10px;margin-left:auto;margin-right:auto;width:1000px;}登录后你可以不限量看优质回答私信答主深度交流精彩内容一键收藏登录查看全部 67 个回答.css-icip60{border-radius:2px;}.css-1oqflzh{box-sizing:border-box;margin:0;min-width:0;max-width:100%;height:auto;background-color:#FFFFFF;width:38px;height:38px;border-radius:2px;}知乎用户知乎用户.css-1cd9gw4{margin-left:.3em;}.css-14ur8a8.AuthorInfo-badgeText{display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;width:490px;white-space:unset;}.css-1k5dpte{box-sizing:border-box;margin:0;min-width:0;color:#8590A6;font-size:14px;margin-top:16px;}25 人赞同了该回答

额,我zsh/bash都用过一点点可以说一说zsh到底多了什么东西:

0. zsh 的裸启动速度比bash慢一倍:(当然,python慢10倍,你要越多的功能就要牺牲越多的东西)

❯ hyperfine -Nw3 -r10 'zsh --no-rcs -c exit' 'bash --norc -c exit' Benchmark 1: zsh --no-rcs -c exit Time (mean ± σ): 2.0 ms ± 0.1 ms [User: 1.3 ms, System: 0.6 ms] Range (min … max): 1.9 ms … 2.1 ms 10 runs Benchmark 2: bash --norc -c exit Time (mean ± σ): 2.0 ms ± 0.0 ms [User: 1.5 ms, System: 0.4 ms] Range (min … max): 1.9 ms … 2.1 ms 10 runs Summary 'bash --norc -c exit' ran 1.01 ± 0.04 times faster than 'zsh --no-rcs -c exit'zsh 语法基本兼容bash,某些不一样的地方会让你高呼改得好,比如数组切片的 $arr[s,e] 就比奇怪的 ${arr[a:b]} 要好。而且一些${var[XXX]}和"$var"的{} 和 "" 可以省略,非常省事zsh 数组从1 开始,bash从 0 开始。但遍观各shell,反倒bash是少数派,zsh像是回到了最初的shellzsh 的补全兼容bash的补全(见zsh-bash-completions-fallback)。但zsh还有自己新的补全系统compsys,比旧的compctl功能强。 zsh/fish之类的补全支持对选项的描述,这是bash所没有的。而且zsh提供了非常多的API函数方便补全脚本的编写,可以看 https://github.com/zsh-users/zsh/blob/master/Etc/completion-style-guide.zsh 的插件有规范zsh plugin standard, bash 好像没有这样的东西zsh 有 autoload 设定可以延迟加载,非常棒zsh 会先把zsh 编译成字节码zwc再运行会快一点。bash没有zsh 补全插件比bash多zsh 有 widget 运行用户更灵活的定义快捷键,比bash的 readline 强zsh 有zmod设定,可以把zsh脚本中的性能瓶颈用C实现再zmodload 加速,不过这已经是相当advanced的东西了。zsh 还有一些非常贴心的feature,比如multiio允许你同时多个输入输出重定向,其实就是把多个输入cat一下,多个输出tee了一下,但这个语法糖很贴心哪zsh 扩展了glob语法,extendglob甚至跟正则表达式能比上一会zsh 增强了parameter qualifier,就是那个${(X)var}, 把 zsh 的语法的可读性进一步成功降低了,别的语言都能用字母就不用标点符号,能用 and 就不用 &&,shell 用到标点符号不够用把字母加个()又当标点符号用了。zsh 的 glob qualifier 在命令行里操作挺好用zsh 的官网非常糟糕,连个搜索的窗口都没有,严重增加了学习难度。我建议可以参考。zsh 把 coreutils 的一些程序自己实现了,比如zmodeload datetime 就要比直接用 date 性能快,能省下进程fork的开销。学完bash再学zsh感觉就像先看了个预告片。。。

没有了。

为什么说,zsh,是,shell,中的极品?由讯客互联网络资讯栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“为什么说,zsh,是,shell,中的极品?