在 bash 中我可以使用!!
来指示最后一个命令。在 ksh 中,我认为您可以用来r
执行类似的操作,但它似乎在我的常见模式之一中失败:输入sudo [last command]
。
> cp foo /bar
cp: permission denied
> r c # If I do this it will repeat my cp call
> sudo r c # when I do this, it tells me that "r" is not a command
如何使用历史记录快速输入“sudo [最后一个命令]”?
答案1
我将使用命令行版本:输入Upand Home(或Ctrl+P然后Ctrl+ A,或 vi 模式下的其他序列),然后输入sudo␣
并按Return。
答案2
答案3
我能做到这一点的最好方法是创建一个自动加载函数,例如sudo_r
:
function sudo_r {
typeset comm=$(hist -nl ${@:- -1 -1} | sed 1q);
print -- $comm;
sudo $comm;
}
然后(比如说)“alias ss=sudo_r”。完成此操作后,您可以键入ss cp
以重复以 开头的最后一个命令cp
,但以 为前缀sudo
。或者如果您输入ss
Return,它将是sudo
上一个命令。
答案4
自从我使用 ksh 以来已经有一段时间了,但我相信该命令recall
通常别名为r
在 bash 中,您可以通过输入文本来回忆起以任何文本开头的最后一个命令,然后ESC CTRL-e
,这比其他命令更有优势!样式历史命令,因为它只是“调用”命令而不执行它,因此给人们一个在执行之前编辑文本的机会
$ sudu <ESC><CTRL>-e
调用以命令行开头的最后一个命令sudo
,在执行前进行编辑