
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 回含まれている必要があります。この文字列は、入力プリプロセッサ コマンドが呼び出されたときにファイル名に置き換えられます。