在bash中,history -p
历史对其论证进行了扩展; zsh 中的替代方案是什么?
答案1
我不知道任何,但请参阅histverify
更改历史扩展行为的选项,以便当您在包含历史运算符的行上按 Enter 时,扩展将在编辑器缓冲区中执行,而无需运行命令。
$ setopt histverify $ 回声!! Enter $ echo setopt histverifyEnter setopt 历史验证
另请注意,zsh
就像 in csh
(历史扩展来自 70 年代末)历史修饰符(如:h
, :r
, :A
...)也可以应用于参数扩展($var:h
...)。
并且可以通过特殊的关联数组访问整个历史记录$history
。
该关联数组的键是历史编号,与未定义顺序的常规关联数组相反,$history[@]
它按键的数值降序排序。
${history:0:1}
最后的历史条目也是如此。因此,您可以使用参数扩展运算符来获得与历史扩展运算符相同的结果。例如:!$:h
,可以是${${(z)history:0:1}[-1]:h}
答案2
在 bash 中,您可以通过执行以下操作来扩展命令:
history -p !23
因此,如果在 23 中你有 ls -l the,则返回将是:
ls
-l
在 zsh 中,我可以通过执行以下操作来重现类似(但不相同)的行为:
history 23 23 | xargs -n1 | tail -n+2