コマンドを実行するときに、十分な許可を得るためにスーパーユーザーとして実行する必要があることに気付かないことがあります。
スーパーユーザーとして同じコマンドを再度実行する方法はありますか?
上矢印キーを使用して古いコマンドをスクロールし、それらを書き換え/変更して、Sudo
をその前に追加することができます。 (矢印キーの上のホームボタンは、位置を先頭に設定します。)
私はSudo !!
のアイデアが嫌いです。なぜなら、時々別のコマンドを追加して、もう覚えていないからです。
単に代替を追加します:略してSudo !!
と入力し、より柔軟に:
Up-arrow (once, or until you find the command you want to Sudo/edit, if it's older)
ctrl+A (place cursor at beginning of line)
"Sudo "
Enter
キーストロークの数はまったく同じです(「ctrl + A」を1つとしてカウントします...)が、「上矢印」を追加すると、履歴内のどのコマンドでも実行できます。
この質問は、「同じコマンドを実行するが、いくつかの変更を加えて」に一般化できます。Unixの素晴らしい設計決定の1つは、一度実装することですシェルでは、シェルから呼び出されるコマンドによって活用できます。
つまり、このトリックはSudo
にjustを適用しません。
Sudo !!
)time !!
)env A=b B=z !!
)!!
)履歴拡張(履歴置換とも呼ばれます)は、以前のコマンドを簡単に(キーストロークを少なくして)繰り返すための単なるシェル機能です。シェルのマニュアルページでhistory expansion
を確認してください。たとえば、履歴を使用して実行できる多くのトリックとショートカットについて説明します。
前のコマンドを番号で参照できます:
!55 # repeat command number 55
!-1 # repeat the previous command, alias for !!
!-2 # repeat the command before the previous command
前のコマンドで個々の単語を参照できます。
some-command !$ # run some-command on the last arg of previous command
繰り返す前に検索することもできます:
!?awk # repeat the last command including the string 'awk'
履歴を検索して、何かを別のものに置き換えることができます。
!?awk?:s/str1/str2/ # repeat previous command matching 'awk' replacing str1 by str2
さらに、コマンドの選択、引数の選択、検索、置換を個別に組み合わせることができるためです。
シェルのmanページ(この場合はman bash
)はあなたの友達です。
これを行うにはいくつかの方法があります
コマンドの前にSudo
を追加して再度コマンドを入力するだけです
押す Up arrow 最後のコマンドを取得し、その前にSudo
を配置します。
Sudo !!
と入力します
!!
は、最後に入力したコマンドに展開されます。コマンドライン履歴を使用して、他のことで同様のことができます here を参照してください
Bashの代わりに zsh を使用し、これを~/.zshrc
に含めるため、 Alt+S コマンドラインの先頭にSudo
を挿入します。
insert_Sudo () { zle beginning-of-line; zle -U "Sudo " }
zle -N insert-Sudo insert_Sudo
bindkey "^[s" insert-Sudo
残念ながら、bashで同じことを行う方法を追跡できませんでした。
エイリアスでそれをしたい場合は、何らかの理由でalias redo='Sudo $(history -p !!)'
を使用する必要があります。
su -c "!!"
Sudoでrootになる権限がない場合、またはSudoプログラムがシステムにインストールされていません。
私が好む方法:
しかし、「Sudo !!」を実行する方が簡単かもしれません。それはあなた次第です。