Bash
“命令|更少”與“更少<(命令)”
查看大量命令輸出的一個常見“習慣用法”是將其
less
通過管道傳輸到command | less
. 但是,也可以使用該語法(可能僅在 中bash
,尚未在其他 shell 中測試過) ,但往往會抱怨. 在探查之後,我發現在這兩種情況下,它都是從管道中讀取的。唯一的區別是,在第一種情況下,它被重定向。在第二種情況下,它以文件名的形式出現。讀取時是否以某種方式“忽略”正常文件檢查?另外,即使內容是文本,它如何確定不是正常文件?less <(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 <(command)
另一種方法是使用程序替換:
less < <(command)
這會導致創建的管道
<()
充當STDIN
.less
less
傾向於抱怨/dev/fd/63
不是正常文件至少在 GNU 下,解決方案是使用以下
-f
選項:less -f <(command)
在正常情況下,
less
不會打開非正常文件(顯然,stdin 除外)。這是為了保護你。-f
強制打開非正常文件。