AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 4993
Accepted
Tim
Tim
Asked: 2009-05-06 12:38:59 +0800 CST2009-05-06 12:38:59 +0800 CST 2009-05-06 12:38:59 +0800 CST

bash 与 zsh 相比的独特功能

  • 772

我成为 zsh 用户已经有一段时间了(在那个 tcsh 和那个 csh 之前)。我对此感到非常满意,但想知道是否存在 zsh 中不存在的 bash 的任何引人注目的功能。相反,是否存在 bash 中不存在的 zsh 功能。我目前的感觉是 bash 更好:

  • 如果您已经熟悉它并且不想学习新语法。
  • 默认情况下,它会存在于大多数 *nix 机器上,而 zsh 可能是一个额外的安装。

不想在这里开始一场宗教斗争,这就是为什么我只是在寻找仅存在于一个外壳中的功能。

bash shell zsh
  • 10 10 个回答
  • 18297 Views

10 个回答

  • Voted
  1. Best Answer
    0x89
    2009-08-10T12:13:05+08:002009-08-10T12:13:05+08:00

    zsh 用于火神。;-)

    说真的:bash 4.0 有一些以前只能在 zsh 中找到的功能,比如 ** globbing:

    % ls /usr/src/**/Makefile
    

    相当于:

    % find /usr/src -name "Makefile"
    

    但显然更强大。

    以我的经验,bash 的可编程完成性能比 zsh 好一点,至少在某些情况下(例如,为 aptitude 完成 debian 包)。

    bash 必须Alt + .插入!$

    zsh has expansion of all variables, so you can use e.g.

    % rm !$<Tab>
    

    for this. zsh can also expand a command in backtics, so

    % cat `echo blubb | sed 's/u/a/'`<Tab>
    

    yields

    % cat blabb
    

    I find it very useful to expand rm *, as you can see what would be removed and can maybe remove one or two files from the commmand to prevent them from being deleted.

    Also nice: using the output from commands for other commands that do not read from stdin but expect a filename:

    % diff <(sort foo) <(sort bar)
    

    From what I read bash-completion also supports completing remote filenames over ssh if you use ssh-agent, which used to be a good reason to switch to zsh.

    Aliases in zsh can be defined to work on the whole line instead of just at the beginning:

    % alias -g ...="../.."
    % cd ...
    
    • 40
  2. X-Istence
    2009-05-24T16:40:48+08:002009-05-24T16:40:48+08:00

    我想指出的是,在 FreeBSD、OpenBSD 或 NetBSD 上默认没有安装 bash,在 Solaris 10 上也没有默认安装(OpenSolaris 将它作为默认设置),上次我使用 AIX,或者默认情况下也未安装 HP-UX 服务器。

    此外,在 OpenSolaris 上 /bin/sh 不是 bash。是ksh。作为一名软件搬运工,我遇到的最大问题是人们认为 /bin/sh 是 bash 并且它将接受 bash 扩展语法。尽管在大多数 Linux 发行版上似乎都是这种情况,但在其他地方却并非如此,而且真的很烦人。

    • 16
  3. Chucky
    2010-11-26T05:31:05+08:002010-11-26T05:31:05+08:00

    虽然我是 bash 用户,但我发现 zsh 的一个功能非常酷:RPS1。

    记住:

    • PS1:左对齐提示
    • RPS1:右对齐提示

    样本:

    当使用类似的东西时

    PS1=’%B(%h) %m%#%b ‘
    RPS1=’(%20<…<%~)'
    

    您会在左侧看到提示,并将当前目录推到右侧。当当前行变得太长时,它甚至会消失!这是因为 zsh 足够聪明,可以给 RPS1 低优先级。

    您可以在http://imgur.com/OAZhC看到此示例的屏幕截图。

    • 12
  4. Magus
    2009-05-07T12:05:32+08:002009-05-07T12:05:32+08:00

    Zsh 有拼写更正。如果你是一个字母(或更多),它会弄清楚你的意思。

    它还具有更强大的制表符补全功能,这是我喜欢的。

    Zsh 有一个交互式配置实用程序,可以按照您的喜好进行设置。

    一些速度测试说 zsh 更快,但我没有注意到任何区别。

    • 9
  5. carlito
    2009-05-24T16:14:29+08:002009-05-24T16:14:29+08:00

    我不知道 zsh 不支持的任何 bash 功能。zsh 的设计目标似乎包括支持 bash 添加的任何功能。

    我仍然使用 bash 而不是 zsh。我很少遇到 zsh 支持而 bash 不支持的引人注目的功能。多年来 zsh 偶尔出现的问题,或者它在某些系统上不存在,使得它不值得进行过渡。

    我终于可以在每个 Unix 系统上使用相同的 shell,因为我永远不会使用的功能而破坏它是不值得的。

    zsh 中存在但 bash 中不存在的功能似乎大多很可爱,但在日常工作中并不重要。

    • 6
  6. Amandasaurus
    2009-06-12T03:58:32+08:002009-06-12T03:58:32+08:00

    bash 有许多过去只存在于 zsh 中的功能。正如任何最近的 ubuntu 用户所发现的那样,您现在也可以使用 bash 进行“智能选项卡完成”。

    • 3
  7. tdavies
    2010-05-17T04:24:10+08:002010-05-17T04:24:10+08:00

    进程替换和扩展通配符是我最想念的两个功能。提示设置也很酷 - 在命令行上键入复杂语句时查看嵌套级别。自动加载使得在每个 shell 中包含许多功能变得可行。

    • 1
  8. Milner
    2009-05-06T12:59:34+08:002009-05-06T12:59:34+08:00

    由于 vi 模式支持,我是 zsh 的粉丝,但我发现它并没有被广泛使用。我想我读到 zsh 喜欢从其他 shell 中获取流行的特性并将它们组合起来(因此特定于 bash 的东西和特定于 csh 的东西都可以在 zsh 中使用)。

    也有人说我在使用zsh来展示我的极客因素,但我无法证实或否认这个谣言。

    • 0
  9. Ian Kelling
    2009-05-06T12:46:10+08:002009-05-06T12:46:10+08:00

    受欢迎程度,#bash 430 位用户。#zsh 123 个用户。我相信 zsh 网站对 zsh 与其他 shell 进行了很好的比较。zsh 有更好的 vi 模式支持。

    • -1
  10. Michèle
    2009-06-13T14:16:37+08:002009-06-13T14:16:37+08:00

    Bash 使用的 if 和 while 语法与命令行的 /bin/sh 脚本中使用的语法相同。
    在 zsh 中,语法是不同的。如果您在命令行上使用 if 或 while 语句,则必须有效地使用 zsh

    • -1

相关问题

  • 什么是有用的 .screenrc 设置?

  • 用于监视文件更改的 Shell 命令

  • GNU 屏幕和 .bashrc

  • 在 .bashrc 中设置环境变量的最佳方法是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve