193

Mac OS X 中的默认 shell 是bash,我通常很乐意使用它。我只是认为这是理所当然的。不过,如果它能自动完成更多的东西,那就太好了,而且我听说过zsh这方面的好消息。但是我真的没有打算花几个小时摆弄设置来稍微提高我的命令行使用率,因为我在命令行上的生活并没有那么糟糕。

(据我了解,bash也可以更巧妙地配置为自动完成。这是我不太热衷的配置。)

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


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

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

4

6 回答 6

85

就个人而言,我喜欢 zsh。

通常,您可能不会注意到它和 bash 之间的区别,直到您想要快速执行诸如递归通配符之类的事情:

  • **/*.c例如。

或者使用后缀别名将特定的 progs 与不同的后缀相关联,以便您可以直接“执行”它们。下面的别名允许您在提示符下“运行”一个 C 源文件,只需键入./my_program.c– 这将与您键入vim ./my_program.c. (相当于双击文件的图标。)

  • alias -s c=vim

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

  • print *(e:age today now:)

您可能可以在 bash 中完成所有这些事情,但我对 zsh 的经验是,如果有我想做的事情,我可能可以在zsh-lovers中找到它。我还发现《从 Bash 到 Z-Shell》这本书非常有用。

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

于 2008-09-17T14:22:46.320 回答
70

对于临时使用,您最好还是坚持使用 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

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 选项。

于 2008-09-04T08:28:02.617 回答
38

切换到 zsh。您将可以访问:

  1. zmv: 你可以做:zmv '(*).mp3' '$1.wma'为数千个文件。
  2. zcalc: 极其舒适的计算器,优于bc.
  3. zparseopts: 用于解析提供给脚本的任意复杂选项的单行代码。
  4. autopushd:您可以随时更改回之前的目录popdcd
  5. 浮点支持。不时需要它。
  6. 哈希支持。有时它们只是一个关键功能。
于 2009-05-26T08:45:16.620 回答
13

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

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

但是,值得一试 ZSH 的所有其他强大功能。上面的例子会给你一个非常简单的提示,并且完成度很好。如果您不想摆弄配置,但想看看 ZSH 能为您做什么,请谷歌搜索“zshrc”,您将获得一些准备使用的配置以开始使用。

于 2008-09-19T23:12:57.767 回答
6

zsh 有一个控制台 gui 配置的东西。您可以快速轻松地设置它,而无需摆弄配置文件。我认为您不需要太多时间来设置它,仅使用默认值可能需要 10 秒,所以请继续尝试。

于 2008-09-04T08:08:30.217 回答
3

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

IBM developerWorks 在 zsh 上有大量资源。

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

一些例子:

  • !?pattern<Tab> 将自动完成到历史匹配模式中的最后一个命令。很有用。

  • 您可以在 RHS 上配置提示。一种用途是在左侧保持固定宽度的提示,以便所有命令在将 pwd(或任何可变宽度)显示为右侧提示的同时很好地排列。

  • 您可以重定向来自多个文件的输入(尚未尝试): cat < file1 < file2 < file3

于 2008-09-04T08:27:10.403 回答