我怎么能`别名sudo !!`?

Man*_*rth 58 bash command-history sudo alias history-expansion

我正在尝试sudo !!在 Bash 中设置别名。我试过alias sbb='sudo !!',但它把它解释为文字 !!并打印

sudo: !!: command not found
Run Code Online (Sandbox Code Playgroud)

如果我使用双引号,它会替换字符串本身中的双 bang,所以这不起作用。

有什么办法可以使这项工作?还是其他别名?`

ric*_*ici 67

!!当您键入它时,它会被 bash 扩展。它不是通过别名替换来扩展的。

您可以使用history内置来进行扩展:

alias sbb='sudo $(history -p !!)'
Run Code Online (Sandbox Code Playgroud)

如果该命令不仅仅是一个简单的命令(例如它包含重定向或管道),则需要在 sudo 下调用 shell:

alias sbb='sudo "$BASH" -c "$(history -p !!)"'
Run Code Online (Sandbox Code Playgroud)


小智 50

尝试:

alias sbb='sudo $(fc -ln -1)'
Run Code Online (Sandbox Code Playgroud)

我喜欢实际上更喜欢将其命名为“请”:

alias please='sudo $(fc -ln -1)'
Run Code Online (Sandbox Code Playgroud)

信息:fc是 bash shell 中的内置命令。列出、编辑和重新执行先前输入到交互式 shell 的命令。

  • `请`绝对是要走的路! (19认同)

Ard*_*rda 5

现在在 GitHub 中有一个用于此目的的存储库,它神奇地检查它是否需要超级用户权限,还修复了拼写错误:

https://github.com/nvbn/thefuck