我不小心r
在 shell 中输入了一些内容,得到的似乎是我上次运行的命令的重复。
man zshbuiltins
,毫无帮助,说这:
r
- 与...一样fc -e -
。
文档fc
几乎无法穿透但我还是总结出了以下几句话:
fc [ -e
ename
] [ -LI ] [ -m
match
] [
old=new
... ] [
first
[
last
] ]
编辑器程序埃纳梅在包含这些历史事件的文件上调用....当编辑完成后,执行编辑的命令。
如果埃纳梅是
-
,没有调用编辑器。
在我看来, 的行为r
类似于感叹号!
,因为它重播历史。事实上,如果我setopt banghist
重新打开 bang ,r man
和之类的东西! man
似乎都会重播我对人类的最后呼唤。
r
和之间有何相同点和不同点!
?在什么样的假设场景中我可以使用r
?
答案1
您很好地引用了手册页中的正确段落。
嘚继承r
自什,因为狂欢或者韓軟體知道这个命令。我认为实现是为了尽可能与这三个主要 shell 兼容。
另一方面,历史爆炸机制!
起源于韓軟體可以使用 禁用它setopt NO_BANG_HIST
。
我想到的这两种机制之间的一个区别是r
和的!
解析方式不同,as!
是保留字,但r
只是一个(内置)命令。这意味着你可以写例如
$ echo my last command was !!
SPACE
按下或ENTER
后,具体设置取决于你
$ echo my last command was man zshexpn
当然r
,除非您使用命令替换,否则这是不可能的。$(r)
所以,我认为这一切都归结为个人喜好或习惯(如果你以前使用什或者韓軟體)...