web-dev-qa-db-ja.com

ルートとして同じコマンドを再度実行

コマンドを実行するときに、十分な許可を得るためにスーパーユーザーとして実行する必要があることに気付かないことがあります。

スーパーユーザーとして同じコマンドを再度実行する方法はありますか?

114
Trufa

最も簡単な方法は次を実行することです:

Sudo !!

これにより、最後のコマンドがスーパーユーザーとして実行されます。

ソース

192
Trufa

enter image description here

Answer:すぐにSudo !!と入力して、昇格した特権で前のコマンドを繰り返します。

edit:画像は reddit を介して見つかり、それは original xkcd comicのRandallによるパロディですマンロー。

69
wim

上矢印キーを使用して古いコマンドをスクロールし、それらを書き換え/変更して、Sudoをその前に追加することができます。 (矢印キーの上のホームボタンは、位置を先頭に設定します。)

私はSudo !!のアイデアが嫌いです。なぜなら、時々別のコマンドを追加して、もう覚えていないからです。

17
Xylol

単に代替を追加します:略して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つとしてカウントします...)が、「上矢印」を追加すると、履歴内のどのコマンドでも実行できます。

13
Olivier Dulac

この質問は、「同じコマンドを実行するが、いくつかの変更を加えて」に一般化できます。Unixの素晴らしい設計決定の1つは、一度実装することですシェルでは、シェルから呼び出されるコマンドによって活用できます。

つまり、このトリックはSudojustを適用しません。

  • 前のコマンドをスーパーユーザーとして繰り返します(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)はあなたの友達です。

7
arielf

これを行うにはいくつかの方法があります

  • コマンドの前にSudoを追加して再度コマンドを入力するだけです

  • 押す Up arrow 最後のコマンドを取得し、その前にSudoを配置します。

  • Sudo !!と入力します

!!は、最後に入力したコマンドに展開されます。コマンドライン履歴を使用して、他のことで同様のことができます here を参照してください

7
user162424

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で同じことを行う方法を追跡できませんでした。

5
Patches

エイリアスでそれをしたい場合は、何らかの理由でalias redo='Sudo $(history -p !!)'を使用する必要があります。

2
Aaron Franke
su -c "!!"

Sudoでrootになる権限がない場合、またはSudoプログラムがシステムにインストールされていません。

1
Achu

私が好む方法:

  • 上矢印キー
  • ホーム
  • 「須藤」
  • 入る

しかし、「Sudo !!」を実行する方が簡単かもしれません。それはあなた次第です。

1
Farid El Nasire