我最近遇到了这个巧妙的 bash 别名来重复上次发出的命令,但作为 sudo。这可以通过sudo !!
在命令失败后直接在终端中使用来完成。
我找到的别名是alias mycmd='sudo $(history -p \!\!)'
我只是不清楚这是如何运作的。
答案1
$(history -p \!\!)
是一种获取最后执行的命令而不将其再次添加到历史记录中的方法。从help history
:
-p perform history expansion on each ARG and display the result
without storing it in the history list
在 bash 中,!!
扩展为最后执行的命令,但不能直接在别名中使用它,因为此扩展在别名扩展之前执行。 (历史扩展是最早发生的之一 - 它甚至发生在大括号扩展之前(即通常首先).)
因此,您必须使用某种方法来获取最后执行的命令,这可以使用 来完成history -p
,它扩展了!!
shell 的方式。
虽然我不知道他们为什么要逃走!
。对我来说,没有反斜杠它工作得很好。