!! [duplicate] でコマンドのエイリアスを使用して、最後のコマンドを呼び出します。

!! [duplicate] でコマンドのエイリアスを使用して、最後のコマンドを呼び出します。

フォローアップの質問です

sudoでコマンドラインを実行する

同じコマンドを再実行したい場合sudo !!次のコマンドを実行した後:

echo "something">/path/file

グローバル代替構文を使用してこのコマンドを呼び出すことができます。

!!:gs/>/|sudo tee -a /

次の後にスペースを使用してください。-ㅏ範囲。

これは次のとおりです。須藤! !ただし、<および>のsudo制限をバイパスするのに役立ちます。 sudoは[<、>]の使用を許可していないからです。

.bashrc簡単に使用できるように、これをエイリアスにどのように入力しますか?

頑張った

alias redo='!!:gs/>/|sudo tee -a /'

しかし、これはうまくいきません。エラーが発生します。

$ echo "sdfdsf">/path/file
bash: /path/file: no permissions

$ redo
bash: /: Is a directory
tee: /: Is a directory

ベストアンサー1

私の考えであなたが探しているものは次のとおりです。

sudo sh -c "!!"

これは最後のコマンドに変換され、!!シェルリダイレクト/パイプ/変数の機能を維持します。

➜  ~  ping 10.0.0.1
--- 10.0.0.1 ping statistics ---
6 packets transmitted, 3 received, 50% packet loss, time 5001ms
rtt min/avg/max/mdev = 1.736/1.951/2.182/0.185 ms
➜  ~  sudo sh -c "!!" ## And becomes like this:
➜  ~  sudo sh -c "ping 10.0.0.1"

おすすめ記事