我想重复执行与 匹配的最后一个命令foo bar
。使用!!
不起作用(它不是我使用的最后一个命令), 也不起作用!foo
,因为我的历史记录看起来像
foo bar dee zep
foo boo lee kee
foo bee
如果我尝试输入!foo bar
,当我按下空格键时,zsh
系统会自动完成为foo bee
(与 一样)。我该怎么做?!!
答案1
!?foo bar
看http://zsh.sourceforge.net/Doc/Release/Expansion.html#Event-Designators
编辑:不,您不能转义空格。如果您需要添加不属于历史扩展的内容,请用另一个分隔符将其分开?
,例如:
echo hello
echo foo
!?echo hello? world # runs "echo hello world"
答案2
更好的答案:
!{?foo bar?}
我发现括号有助于延迟魔法空间的历史扩展,尽管它们被记录为:
将历史引用与相邻字符隔离开来(如有必要)。
在页面上:
http://zsh.sourceforge.net/Doc/Release/Expansion.html#History-Expansion
注意:在某些情况下,使用n前一个历史项的语法如下:
!-2
对于第二条命令返回,!-1
与!!