「命令|少ない」対「少ない<(命令)」

「命令|少ない」対「少ない<(命令)」

大量のコマンド出力を表示するための一般的な「慣用語」は、経由でlessパイプすることですcommand | less。しかし、この構文を使用することは可能ですがbash(おそらくWindowsでのみ可能で、まだ他のシェルではテストされていません)、文句を言う傾向があります。それを見た後、どちらの場合もパイプで読んでいることがわかりました。唯一の違いは、最初の場合にリダイレクトされることです。 2番目のケースでは、ファイル名で取得します。読み取ると、通常のファイルチェックは何とか「無視」されますか?また、コンテンツがテキストであっても、これが通常のファイルではないかどうかを判断します。less <(command)less/dev/fd/63 is not a regular file/proc/*/fdstdin/dev/fd/63lessstdin/dev/fd/63

答え1

less通常、パイプやバイナリファイルなどの非正規ファイルを開くことを拒否します。演算子を使用して非正規ファイルを-f強制的に開くことができます。less

less -f <(command)

別の方法はプロセスの交換:

less < <(command)

これにより、パイプが標準入力()<()として機能するように生成されます。STDINless

答え2

less/dev/fd/63普通のファイルではないと文句を言うことが多い

少なくともGNUでは、この問題に対する解決策は次のオプションを使用することです-f

less -f <(command)

通常、less非正規ファイルは開かれません(もちろんstdinは除く)。これはあなたを保護するためのものです。 -f非正規ファイルを強制的に開きます。

関連情報