我不是以英語爲母語,所以請原諒這個問題的尷尬稱號。我只是不知道如何更好地表達它。Shell重定向VS明確的文件處理代碼
我對FreeBSD的盒子,我有一點點的過濾器工具寫在C
其中通過stdin
讀取數據的列表,並通過輸出一個stdout
處理列表。我像這樣調用它:find . -type f | myfilter > /tmp/processed.txt
。
現在我想給我的過濾器一點點更多的曝光和發佈。公約說,工具應該允許這樣的事情:find . -type f | myfilter -f - -o /tmp/processed.text
這將迫使我編寫代碼,因爲shell可以完成這項工作,所以不需要這些代碼,因此我傾向於忽略它。
我的問題是:我錯過了一些參數(其它約定,但)爲什麼文件的閱讀和寫作應該在我的代碼做一個不委託給shell重定向?
如果存在這樣的約定,像'grep'這樣的工具就不會遵循它。 – 2011-05-31 07:32:09
如果人們期待這樣的工具(不管它有多不合邏輯),那麼遵循它們是有道理的。別忘了* nix工具在許多環境中使用。也許有些事情會更方便地使用stdio的參數insead。 – vbence 2011-05-31 07:37:24
是的,grep確實使用了-f,但是您可以執行grep模式FILENAMES,所以接受文件名參數並且不僅僅從STDIN讀取行。另外,grep有-r -D -d參數 - 處理參數列表中的''目錄'問題等等。例如@ikegami告訴我,每次都很樂意處理情況。 – jm666 2011-05-31 07:43:46