
sudo !!
Bashでエイリアスを設定しようとしています。 'を試しましたが、alias sbb='sudo !!
テキストとして解釈して !!
印刷します。
sudo: !!: command not found
二重引用符を使用すると、文字列自体の二重感嘆符が変わるため、機能しません。
これを行う方法はありますか?それとも別のエイリアスですか? `
答え1
!!
入力すると bash によって拡張されます。エイリアス置換では拡張されません。
history
内蔵機能を使用して拡張できます。
alias sbb='sudo $(history -p !!)'
コマンドが単純なコマンド以上の場合(リダイレクトやパイプなど)、sudoでシェルを呼び出す必要があります。
alias sbb='sudo "$BASH" -c "$(history -p !!)"'
答え2
答え3
今、この目的のためにGitHubにリポジトリがあります。このリポジトリは、スーパーユーザー権限が必要かどうかを魔法のように確認し、ミスも修正します。
答え4
これはもともと公開されましたこれ質問がありますが、ここに投稿することを提案しました。
同様の置換を実行するためにfc
エイリアスを使用する方法は次のとおりです。以下を使用したいとします(ここではhistory
!-
!-n
Nは、最後に使用したn番目のコマンドの番号です。)次のエイリアスを使用して、fc
およびを使用できます。history
使用
history
:alias xyz='echo $(history -p "!-<n>") ; sudo $(history -p "!-n")'
注:これはまたはで囲む
!-n
必要があります。'
''
使用
fc
:alias xyz='echo $(fc -ln -n -n) ; sudo $(fc -ln -n -n)'
注:ここで、最初と2番目は履歴リストの範囲を指定するために使用されます。
-n
ここでは、コマンドを実行する前にecho-ingを使用して!-<n>
。