我不小心r在 shell 中输入了内容,结果似乎是我运行的最后一个命令的重复。
man zshbuiltins,无益地,这样说:
r- 一样fc -e -。
的文档fc 几乎难以理解,但我设法梳理出这些引用:
fc [ -eename] [ -LI ] [ -mmatch] [old=new... ] [first[last] ]
在包含这些历史事件的文件上调用编辑器程序ename ....当编辑完成时,将执行编辑的命令。
如果ename是
-,则不会调用任何编辑器。
这对我来说就像 的行为r类似于感叹号!,因为它重播历史。确实,如果我setopt banghist重新打开 bang,诸如r man和 之类的! man东西似乎都会重播我对人类的最后一次召唤。
哪些异同r和!?我可以使用的假设场景是r什么?
mpy*_*mpy 10
您从手册页中引用了正确的段落,做得很好。
zsh继承r自ksh,因为bash或csh都不知道这个命令。我想实现是为了尽可能与这三个主要 shell 兼容。
另一方面,历史 bang 机制!源自csh,可以使用setopt NO_BANG_HIST.
这两种机制之间的一个区别这使我想起的是,r和!解析不同,因为!是保留字,但r只有一个(内置)命令。这意味着你可以写例如
$ echo my last command was !!
Run Code Online (Sandbox Code Playgroud)
它得到(取决于您按下SPACE或后的设置ENTER)到
$ echo my last command was man zshexpn
Run Code Online (Sandbox Code Playgroud)
r除非您$(r)当然使用命令替换,否则这是不可能的。
所以,我认为这一切都归结为个人喜好或习惯(如果您曾经使用过ksh或csh)...
| 归档时间: |
|
| 查看次数: |
2001 次 |
| 最近记录: |