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