当前位置:  开发笔记 > 编程语言 > 正文

值得转换到zsh供临时使用?

如何解决《值得转换到zsh供临时使用?》经验,为你挑选了5个好方法。

Mac OS X中的默认shell是bash,我通常很乐意使用它.我认为这是理所当然的.如果它能够自动完成更多的东西,那将是非常好的,我zsh在这方面听到了很多好的东西.但我真的不想花费数小时摆弄设置来提高我的命令行使用量,因为我在命令行上的生活并没有那么糟糕.

(据我所知,bash也可以配置为更聪明地自动完成.这是配置我不是那么热衷.)

zsh即使在少数情况下,转换到我的生活会更轻松吗?或者,如果你花时间去了解为什么它更好,它只是一个更好的外壳吗?(例子也很好:))


@ Rodney Amato 和@ Vulcan Eager 给出了两个很好的理由分别坚持bash并切换到zsh.看起来我要调查两个!那好吧:)

是否有人对争论的双方都有意见?



1> Matt..:

就个人而言,我喜欢zsh.

通常,您可能不会注意到它和bash之间的区别,直到您想要快速执行递归globbing之类的操作:

**/*.c 例如.

或者使用后缀别名将特定的prog与不同的后缀相关联,以便您可以直接"执行"它们.以下别名允许您通过简单地键入来"在"提示符处"运行"C源文件./my_program.c- 这将完全像您键入的那样工作vim ./my_program.c.(等同于双击文件图标的等效项.)

alias -s c=vim

或者打印今天修改的文件名称:

print *(e:age today now:)

你可以在bash中做所有这些事情,但我对zsh的经验是,如果有我想做的事情,我可以在zsh爱好者中找到它.我还发现" 从Bash到Z-Shell " 这本书非常有用.

玩弄令人难以置信的大量选项也很有趣!


这些天,你可以在bash中设置`globstar`选项,以允许如上所述的递归搜索.但是,当写这个答案的时候,确实不是这样的.
@aaronsnoswell:"Recursive globbing"表示在子目录*及其所有子目录*中搜索名称与特定模式匹配的文件.Bash默认不这样做; 你会'find`或`locate`来递归搜索.但是,一旦你让另一个程序进行搜索,你就会失去名称之间的界限(除非你小心)以及访问shell的内部通配能力,并且基本上要与其他程序提供的功能相关,或者通过像`grep`,`awk`或`sed`这样的程序来输出它的输出(它们本身就相当复杂).

2> Rodney Amato..:

对于临时使用,你最好坚持使用bash并且只是安装bash完成.

安装它非常简单,从http://www.caliban.org/bash/index.shtml#completion中获取bash-completion-20060301.tar.gz 并将其解压缩

tar -xzvf bash-completion-20060301.tar.gz

然后将bash_completion/bash_completion文件复制到/ etc with

sudo cp bash_completion/bash_completion /etc

这将提示您输入密码.您可能希望为任何其他完成脚本创建/etc/bash_completion.d目录(例如,我在那里有git完成脚本).

完成此操作后,最后一步是确保主目录中的.bash_profile文件具有

if [ -f /etc/bash_completion ]; then
     . /etc/bash_completion 
fi

在它登录时加载完成文件.

要测试它只需打开一个新终端,并尝试完成cvs,它应该显示完成列表中的cvs选项.


如果你在OSX上使用自制程序,你可以运行`brew install bash-completion`.
Bash-Completion2更好!在OS X上:`brew tap homebrew/versions; brew install bash-completion2`

3> 小智..:

切换到zsh.您将有权访问:

    zmv:你可以:zmv '(*).mp3' '$1.wma'成千上万的文件.

    zcalc:非常舒适的计算器,比bc.

    zparseopts:一行代码,用于解析为脚本提供的任意复杂选项.

    autopushd:您可以随时做popdcd改回以前的目录.

    浮点支持.它需要不时.

    哈希支持.有时它们只是一个关键特征.


zmv的例子应该是zmv'(*).mp3''$ 1.wma'.请纠正它,这种粗心的演示可能会使缺乏经验的人感到困惑和沮丧.
"autopushd:你总是可以在cd之后执行popd以更改回以前的目录." 是不是只相当于CD - ?
@TravisBear`autoload zcalc; zcalc`(虽然每当我需要一个计算器时我自己只输入`python`).
`zmv`和`zcalc`不是开箱即用的.目前尚不清楚`zmv`只是重命名文件; 我以为你可能一直在转换格式.我不知道什么是"哈希"支持甚至意味着什么.这篇文章似乎对已经知道zsh的人来说只是"有用".

4> jkramer..:

如果你想要使用ZSH更好地完成,那么配置非常简单.把它放在〜/ .zshrc中:

autoload -U zutil      # [1]
autoload -U compinit   # [2]
autoload -U complist   # [3]
compinit

但是,值得查看ZSH的所有其他强大功能.上面的例子将为您提供一个非常简单的提示,并且完成得很好.如果您不想摆弄配置,但希望看到ZSH可以为您做什么,谷歌为"zshrc",您将获得一些准备使用配置来开始.

[1]:http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzutil-Module

[2]:http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization

[3]:http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcomplist-Module


什么样的东西会增加完成?我不喜欢在不知道它在做什么的情况下随意添加内容.

5> Staale..:

zsh有一个控制台gui配置的东西.您可以非常快速,轻松地进行设置,而无需使用配置文件.我认为你不需要太多时间进行设置,只需使用默认值就可能需要10秒,所以继续尝试一下.


你怎么访问这个"控制台gui"?
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有