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 的命令。