単に `| cat -`を使用すると、ファイル記述子エラーが発生します。

単に `| cat -`を使用すると、ファイル記述子エラーが発生します。

これは動作するdiffコマンドです:

$ diff -u <(echo 'foo:bar:baz' | tr : "\n") <(echo 'foo:baz' | tr : "\n")
--- /dev/fd/11  2023-08-30 13:11:50
+++ /dev/fd/13  2023-08-30 13:11:50
@@ -1,3 +1,2 @@
 foo
-bar
 baz

からパイプラインを追加すると、diffすべてのコマンドが次のエラーで失敗します。

$ diff -u <(echo 'foo:bar:baz' | tr : "\n") <(echo 'foo:baz' | tr : "\n") | command cat -
diff: /dev/fd/11: Bad file descriptor

command cat -代わりに、cat -シェルプラグインが「魔法」を実行する場所に使用してください。

誰が説明できますかなぜこの問題を解決するにはどうすればよいですか?

答え1

私はこれがdiff色の違いを保証するためにローカルで定義された関数であることがわかりました。これがなぜ問題を引き起こすのかはまだ説明できません。command diffしかし、私の回避策は単にdiff

関連情報