Posix

為什麼不只使用標準流而不是使用文件名?

  • November 20, 2011

雖然我知道像這樣的程序mv需要一個實際的文件名作為參數,但像這樣的程序sort可以從標準輸入讀取寫入標準輸出,names | sort > names而不是使用文件名並提供諸如-o:之類的選項sort names -o names

那麼這背後的原因是什麼?

簡而言之,它為程序提供了更多的靈活性和易用性,而幾乎不需要額外的程式。那為什麼不呢?

大多數以適用方式執行的核心實用程序都具有該功能。我不是 perl 程序員,但我相信菱形運算符<>的行為方式相同 - 如果文件存在於命令行中,則從文件讀取,否則從 stdin 讀取)。而且我似乎還記得拉里說過,perl 腳本可以相當容易地模擬該功能中的核心實用程序。

更重要的是,它允許程序一次對多個文件進行操作,並且可以將它們區分開來。使用 cat,您無法做到這一點。沒有名稱,您就無法擁有內聯 ( sed -i) 或根據文件 ( wc) 進行區分的實用程序。它看起來也更乾淨(IMO):sort file -o sortedvs cat file | sort > sortedor sort <file >sorted(順便說一句,它不能內聯正常工作,讀取和寫入同一個文件)。

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