Bash

我怎樣才能別名 sudo !!

  • October 16, 2021

我正在嘗試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 的答案

引用自:https://unix.stackexchange.com/questions/85352