実行前にサブシェルを拡張しますか?

実行前にサブシェルを拡張しますか?

私はしばしばコマンドを実行するためにサブシェルを使用し、時には何かを実行する前にサブシェルを拡張したいと思います。これにより、私がやっていることを確認したり、将来の作業を編集したりできます。

たとえば、サブシェルの結果を編集できるように実行する前に、次のコマンドラインを展開するにはどうすればよいですか?

例えば

$ 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\egglob-expand-word\C-x*

答え2

以下は便利な方法です。 ~/.inputrcに次の行を追加します(必要に応じてファイルを生成します)。

Control-x: シェル拡張ライン

次のいずれかの方法を使用して、履歴またはエイリアスのみを拡張したり、その両方を拡張したりできます。

Control-x: 記録拡張ライン

または

Control-x:エイリアス拡張行

または

Control-x:履歴とエイリアスの拡張行

収集した内容ですこのブログでスーパーユーザーに関する質問、これは次のようによく似ています。

関連情報