指定されたインデックス/行番号で最後のコマンド出力を再利用します。

指定されたインデックス/行番号で最後のコマンド出力を再利用します。
ls

示す:

entry1
entry2
entry3

次のシェルコマンドで上記の出力(すべてのエントリではなくnなどの特定の行のエントリ)を再利用するにはどうすればよいですか?

それは次のとおりです。

vi $(!!)@3

以下を意味する必要があります。

vi entry3

ベストアンサー1

出力を直接再利用することはできません。ビデオメモリにピクセルバンドルとして保存したり、端末エミュレータのメモリに保存したりすることもできますが、そこから再インポートする便利な方法はありません。できることは、コマンドを再実行して今回は出力をキャプチャすることです。それがまさにそのことです!!

zsh では、次を使用します。パラメータ拡張フラグ入れ子になった置換で選択した行を抽出します。あるいは、外部ユーティリティを使用して分割して簡単に入力できます。

vi "${${(f)$(!!)}[3]}"
vi "$(!! | awk NR==3)"

これはzshでも実際に二重引用符が必要な数少ない場合の1つです。それ以外の場合、コマンドの出力はスペースで区切られたコンポーネントに分割されます。スペースで区切られたコンポーネントが問題ない場合は、より短いコマンドを使用できます。

vi ${$(!!)[3]}

おすすめ記事