Bash我怎樣才能
我怎樣才能別名 sudo !!
?
我正在嘗試
sudo !!
在 Bash 中設置別名。我試過alias sbb='sudo !!
’,但它解釋為文字!!
並列印sudo: !!: command not found
如果我使用雙引號,它會替換字元串本身中的雙鍵,所以這不起作用。
有什麼辦法可以使這項工作?還是替代別名?`
!!
鍵入時由 bash 擴展。它不是通過別名替換擴展的。您可以使用
history
內置進行擴展:alias sbb='sudo $(history -p !!)'
如果命令不僅僅是一個簡單的命令(例如它包含重定向或管道),您需要在 sudo 下呼叫一個 shell:
alias sbb='sudo "$BASH" -c "$(history -p !!)"'
嘗試:
alias sbb='sudo $(fc -ln -1)'
我喜歡實際上更喜歡將其命名為“請”:
alias please='sudo $(fc -ln -1)'
Info:
fc
是 bash shell 中的內置命令。它列出、編輯和重新執行以前輸入到互動式 shell 的命令。Zsh 與
!!
和別名有類似的問題,並且fc -ln -1
也可以在那里工作。儘管在 sudo’ed 命令行中獲取重定向和其他 shell 語法的警告適用,但您可能希望將命令包裝在 shell 呼叫中,或者eval
,請參閱@rici 的答案。