私はしばしばコマンドを実行するためにサブシェルを使用し、時には何かを実行する前にサブシェルを拡張したいと思います。これにより、私がやっていることを確認したり、将来の作業を編集したりできます。
たとえば、サブシェルの結果を編集できるように実行する前に、次のコマンドラインを展開するにはどうすればよいですか?
例えば
$ find -name "test.txt"
/tmp/test.txt
$ mv $(!!) /tmp/new.txt
サブシェル拡張を見たいです。今後次のようにコマンドを実行します。
$ mv /tmp/test.txt /tmp/new.txt
これを行う方法はありますか?
ベストアンサー1
shell-expand-line
(\e\C-e
)はbashのコマンド置換を拡張します。
$ bind -p|grep shell-ex
"\e\C-e": shell-expand-line
$(!!)\e\C-e
前のコマンドを再実行して出力を挿入します。
"\eo": "$(!!)\e\C-e"
また、他のコマンド置換も拡張しますがshell-expand-word
。
Bash 4.0以降では、を有効にして入力globstar
し、()または()を**/file.txt
使用することもできます。glob-complete-word
\eg
glob-expand-word
\C-x*