$(<cmd>)
Bashでコマンド置換の結果を拡張して編集できますか?
<cmd>
これが私が実行したい別のコマンドにつながるとしましょう。実際には$(<cmd>)
コマンドは実行されますが表示されないため、もう一度戻ってhistory
編集することはできません。
この問題を解決した唯一の方法は、出力を$(<cmd>)
変数に割り当ててcmd=$(<cmd>)
から、次pbcopy
を使用してクリップボードにエコーすることでした。 macOS echo $cmd | pbcopy
。
答え1
現在のコマンドラインからすべてのシェル置換項目を拡張できます。
シェル延長ケーブル(MCe)- シェルのように線を拡張します。これは、エイリアスと履歴の拡張だけでなく、すべてのシェルワード拡張(シェル拡張ビュー)。
かちりと言う音: Ctrl+ Esc+ e。
例:
$ echo $(curl -s ifconfig.io)
# press ctrl+esc+e,
# command line will switch to:
$ echo 151.101.1.69
コマンドラインとの混乱を避ける-s
ために追加しました。他のコマンドでは使用する必要があります。curl
stderr
2> /dev/null
答え2
私はAppleではなくラップトップでKubuntuのBashを使用しています。Ctrl+ Alt+e以下を含むコマンドラインから多くの機能を拡張しました$(whatever)
。キーストロークがMacキーボードにどのように「変換される」のか分かりません。ポイントはトリガーですshell-expand-line
注文する。
メモ:
- エラーは
whatever
プロセスを中断する可能性があります。 - 他のものもインラインに拡張されます。
- 参照が失われます
$(whatever)
だから最初に入力して展開し、残りを追加するのが良いと思います。