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