作者:顽石1129_659 | 来源:互联网 | 2023-05-18 20:11
我是shell的重度用户,开发工作除了写文档都是在shell下实现的。所以shell就是我的生产力工具,打造高效的shell环境,能够大幅提高我的工作效率。有很多性能
总结
zsh领有成熟的生态,古代的语法,弱小的性能,是目前shell的最好抉择。
我用shell做什么
我是shell的重度用户,开发工作除了写文档都是在shell下实现的。所以shell就是我的生产力工具,打造高效的shell环境,能够大幅提高我的工作效率。有很多性能,比方文件关上敞开,文件目录跳转,初始化配置,eda工具设置,是不适宜用其余脚本语言来写的,shell脚本也是最佳选项。很多子性能适宜编译成二进制文件后,由shell来对立调用摆布。
所以抉择shell十分关注它的生态以及生态里已有的性能。生态不好,就须要本人造轮子,显示不适宜我这样的IC开发者,所以我最选淘汰的是咱们行业最罕用的csh. 其次就是最好有成套的环境能够间接应用,这样就不须要本人花大量工夫去配置成方便使用的环境。这方面oh-my-zsh的存在极大缩小了使用者的配置工夫。拿来主义十分爽。内置十分多主题和插件,间接能够应用。
担心
在咱们这个行业十分多人用csh,并且可能有些脚本是用csh写的,感觉转过来十分不不便,相当于他人曾经有csh生态了,你一个人转过来相当于摈弃了生态。
这在我看来齐全不是问题,因为他人所谓的脚本如果是很谨严的脚本,肯定不会依赖于SHELL的,如果依赖于SHELL,那么脚本肯定是比拟随便的,或者是source一些变量设定和门路设定的,这种如果肯定想重用,能够用工具主动转成bash(这样zsh也能够用了)。这种是一次性工作量。
相比zsh带来的效率晋升,这个代价很小。
小声说一句,我其实并没有用其他人的csh脚本,因为他们的脚本真的只是给本人用的一些变量设定和alias之类。我是用不上的。
上面我来一一介绍它的长处。
兼容性
zsh根本兼容bash, 所以绝大部分bash脚本能够间接应用。
轻微的差异参见我的这篇文章
文件补全
只有按下tab键, 它能够依据前文命令列出文件或目录。
如果是svn add
, 它会只列出末增加到仓库中的文件。
如果是cd
, 它会只列出目录。
便捷的目录切换
能够用cd .....
向上5层
能够用d
回车列出最近5个目录,而后用数字抉择进入哪个目录
能够用cd /v/o/s/d
来进入/var/opt/synopsys/doc
目录
命令选项补全
这是补全的一种,但它的弱小值得再提一遍
它能够理念命令。比方
dconf
会主动列出subcommand
$ dconf
compile -- compile a binary database from keyfiles
dump -- dump an entire subpath to stdout
help -- display help information
list -- list the contents of a directory
load -- populate a subpath from stdin
read -- read the value of a key
reset -- reset the value of a key or directory
update -- update the system databases
watch -- watch a path for changes
write -- change the value of a key
命令参数补全
比方下面的命令输完dconf read /
按下就会主动输入org/
和system
两个选项
$ dconf read /
org/ system/
再比方输出kill nWave
后按下tab会主动变成kill 5378
历史记录
zsh的历史记录在多个terminal是共享,能够用向上箭头来搜寻,比方输出make
而后用向上键,它会顺次列出以往以make开关的命令,这在实现工作中十分高效。
oh-my-zsh
150kStar、275+插件、140+主题、2000+贡献者….., 从这组数字就晓得这是如许优良的一个shell配套工具。
oh-my-zsh的存在极大简化了zsh配置和应用的问题,相当于简装房间接入住。
各种主题只有在配置文件里写一下就胜利了, 各种插件只有在配置文件里加上就装置胜利了
这个咱们不多讲了,有趣味能够间接应用就好了。
附加插件
在https://github.com/zsh-users下有一些加强插件,都很命令,尤其举荐其中的zsh-autosuggestions
, 它能够主动列出你以前输出过的命令和选项
比方用下面的dconf
命令为例
文件类型敏感的alias
比方配制如下:
alias -s tgz='tar -zxvf'
alias -s gz='tar -zxvf'
alias -s bz2='tar -jxvf'
alias -s zip='unzip'
alias -s v=vi
alias -s sv=vi
alias -s vhdl=vi
alias -s cpp=vi
在zsh下输出test.sv会主动用vi关上,输出test.tgz,会用tar -zxvf test.tgz
执行