Bash

“命令|更少”與“更少<(命令)”

  • July 25, 2014

查看大量命令輸出的一個常見“習慣用法”是將其less通過管道傳輸到command | less. 但是,也可以使用該語法(可能僅在 中bash,尚未在其他 shell 中測試過) ,但往往會抱怨. 在探查之後,我發現在這兩種情況下,它都是從管道中讀取的。唯一的區別是,在第一種情況下,它被重定向。在第二種情況下,它以文件名的形式出現。讀取時是否以某種方式“忽略”正常文件檢查?另外,即使內容是文本,它如何確定不是正常文件?less &lt;(command)``less``/dev/fd/63 is not a regular file``/proc/*/fd``stdin``/dev/fd/63``less``stdin``/dev/fd/63

less通常拒絕打開非正常文件,如管道或二進製文件。您可以使用-f運算符強制less打開非正常文件:

less -f &lt;(command)

另一種方法是使用程序替換

less &lt; &lt;(command)

這會導致創建的管道&lt;()充當STDIN.less

less傾向於抱怨/dev/fd/63不是正常文件

至少在 GNU 下,解決方案是使用以下-f選項:

less -f &lt;(command)

在正常情況下,less不會打開非正常文件(顯然,stdin 除外)。這是為了保護你。 -f強制打開非正常文件。

引用自:https://unix.stackexchange.com/questions/146422