我试图less
使用LESSOPEN
环境变量读取某些文件的过滤版本,但无论我的预处理器多么简单,该命令都会挂起,直到我SIGINT
通过 Ctrl+C 发送它:
LESSOPEN='||cat' less foo bar
我在这里做错了什么? (请注意,我不能仅将输入作为管道传递,因为我在单独的缓冲区中打开多个文件。)
答案1
您忘记了%s
,没有它就cat
无法获取文件名,只是等待来自标准输入的输入:
LESSOPEN='||cat %s' less foo bar # works
LESSOPEN='||cat' less foo bar # hangs
这联机帮助页说:
要设置输入预处理器,请将 LESSOPEN 环境变量设置为将调用输入预处理器的命令行。该命令行应包含一次字符串“%s”,当调用输入预处理器命令时,该字符串将被文件名替换。