変数ではなくコマンドラインに直接コマンドを出力します。

変数ではなくコマンドラインに直接コマンドを出力します。

私はbashシェルを使用しており、コマンドが実行された後に表示されるコマンドプロンプトにコマンド出力が直接表示されます。

私のアイデアを説明するために考えた例は次のとおりです。

locate create_tables.sql|MAGIC_command
user@localhost:~# /usr/share/doc/phpmyadmin/create_tables.sql

次に、次のようにdsubstitutionコマンドを使用します。

sudo $(locate create-tables.sql)

有効ですが 即時実行出力される前に編集できるようにしたいです。どのような方法がありますか?

答え1

Emacsモードではsudo $(locate create-tables.sql)、、、+を入力しますEscControle

shell-expand-lineバラよりバッシュリファレンスマニュアル:

シェルのように線を広げます。エイリアスと履歴の拡張だけでなく、すべてのシェルワード拡張も行われます。

答え2

私は主にこのようなことをするときにクリップボードを使います。

$ some_command | cb
$ cb_edit
$ `cb` #or paste it with your paste button/shortcut

魔法:

 cb() {
  if [ ! -t 0 ]; then
    #if somebody's piping in reproduce input and pipe a copy to the clipboard
    tee >(xclip -selection c)
  else
    #otherwise, print the contents of the clipboard
    xclip -selection c -o 
  fi
}
cb_edit() { cb | vipe "$@" | cb; }

答え3

あまりエレガントな解決策は、出力をいくつかのtmpfileに保存し、そのファイルを編集して次のように実行することです。

$ locate create_tables.sql > /tmp/tmpfile
$ vi !$    # last argument of last command
$ bash !$

関連情報