在 zsh 的手册中,在 Jobs & Signals 部分,它说:



立即放弃工作的两种方式有什么区别吗?如果不是,那么为什么有两种不同但非常相似的方法呢?

最佳答案

有区别吗?

有趣的问题。我克隆了 git repo,开始查看它的添加位置,我发现将信息添加到手册中的提交是初始提交。这可能意味着 CVS 的更改并未通过保留提交完成,但是当我看到 2009 年的提交时,我没有进一步查看。

然后我查看了代码,答案就在那里。在 token 列表中有

...
"&|",       /* AMPERBANG      30 */
...

当解析器接近&符号并看到“!”或“|”之后,它会自动返回 AMPERBANG 作为读取的 token 。从这一点来看,这两者没有区别。

我想我给你的答案是 在当前版本的 ZSH 中这两者没有区别。

为什么有两个不同的标记具有相同的含义?

从代码上看,好像是键盘相关的东西。代码中有很多地方将这两者用于相同的含义(字面意思是 if (d == '!' || d == '|') 在那里出现了很多次。我发现的唯一与键盘相关的原因是,显然,在瑞士键盘上,您可以使用 | 键入 AltGr+1在美国(和类似的)布局中,感叹号是由 Shift+1 产生的。我发现了其他原因,但由于其用户的受众范围很小,这极不可能。

关于shell - &! 和有什么区别?和&|在 zsh 中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20473254/

10-15 01:14