LESSOPEN によってコマンドがハングするのはなぜですか?

LESSOPEN によってコマンドがハングするのはなぜですか?

less環境変数を使用して、いくつかのファイルのフィルターされたバージョンを読み取ろうとしていますが、プリプロセッサがどれだけ単純であっても、 Ctrl + C でLESSOPEN送信するまでコマンドはハングします。SIGINT

LESSOPEN='||cat' less foo bar

ここで何が間違っているのでしょうか? (複数のファイルを別々のバッファーで開いているため、入力をパイプとして渡すことはできないことに注意してください。)

答え1

を忘れました%s。これがないとcatファイル名が取得されず、単に標準入力からの入力を待機することになります。

LESSOPEN='||cat %s' less foo bar # works
LESSOPEN='||cat' less foo bar # hangs

マニュアルページ言う:

入力プリプロセッサを設定するには、LESSOPEN 環境変数を、入力プリプロセッサを呼び出すコマンド ラインに設定します。このコマンド ラインには、文字列 "%s" が 1 回含まれている必要があります。この文字列は、入力プリプロセッサ コマンドが呼び出されたときにファイル名に置き換えられます。

関連情報