在 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/