為什麼 LESSOPEN 導致我的命令掛起?

為什麼 LESSOPEN 導致我的命令掛起?

我試圖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”,當呼叫輸入預處理器命令時,該字串將被檔案名稱取代。

相關內容