標準出力リダイレクトまたはパイプから一時ファイルを作成する

標準出力リダイレクトまたはパイプから一時ファイルを作成する

一部のコマンドはstdoutとしてのみ出力されます。
一部のツールはファイルにのみ機能します。
互いに貼り付けるコマンドはありますか?

設計された簡単な例:

diff $(echo 1 | stdout-to-temp-file) $(echo 2 | stdout-to-temp-file)

私の実際のユースケース:現在の解決策:

git show HEAD:$1 > /tmp/left && meld /tmp/left $1

私の実際のユースケースは次のとおりです。

meld $(git show HEAD:$1 | stdout-to-temp-file) $1

他のいくつかの状況でも使用されます(例:gitまたはmeld専用の変更を探していません)。

ベストアンサー1

<出力をにリダイレクトできますstdin

どのように動作するのかわかりませんが、melddiffの例に関連して動作する方法は次のとおりです。

一時ファイルの使用

$ cmd1 > file1.tmp
$ cmd2 > file2.tmp
$ diff file1.tmp file2.tmp

一時ファイルなし

$ diff <(cmd1) <(cmd2)

使用しているシェルによって構文が異なる場合があります(私はksh88を使用しています)。

おすすめ記事