关于bash:值得随意使用zsh切换到zsh?

关于bash:值得随意使用zsh切换到zsh?

Worth switching to zsh for casual use?

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

(据我所知,bash也可以配置为更加巧妙地自动完成。这是配置我不是那么热衷。)

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

@Rodney Amato

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

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


就个人而言,我喜欢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并且只是安装bash完成。

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

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

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

1
sudo cp bash_completion/bash_completion /etc

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

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

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

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

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


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

  • zmv:您可以执行:zmv '(*).mp3' '$1.wma'数千个文件。
  • zcalc:非常舒适的计算器,优于bc
  • zparseopts:用于解析为脚本提供的任意复杂选项的单行程序。
  • autopushd:您始终可以在cd之后执行popd更改回上一个目录。
  • 浮点支持。它需要不时。
  • 哈希支持。有时它们只是一个关键特征。

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

    1
    2
    3
    4
    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

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


    Staale正在讨论类似于程序的向导(CUI),它在第一次运行zsh时自动运行。只需回答一些问题,查看/更改默认值并为其配置。

    IBM developerWorks在zsh上拥有很多资源。

    我没有使用非常先进的功能,到目前为止,我没有遇到严重的差异,这应该阻碍来自bash的人。

    一些例子:

    • !?pattern 将自动完成
      历史匹配中的最后一个命令
      图案。很有用。

    • 您可以在上配置提示
      RHS。一个用途是保持固定
      左侧的宽度提示
      所以所有的命令都排好了
      显示密码(或任何东西)
      可变宽度)作为右手
      方提示。

    • 您可以从多个文件重定向输入(但要尝试此操作):cat


    推荐阅读