Fedora
為什麼 rpm 命令有一個“–pipe”選項?
從 rpm 的手冊頁:
--pipe CMD Pipes the output of rpm to the command CMD.
為什麼要添加這個?為什麼要使用它而不是通過外殼本身進行管道傳輸?
rpm
當從 shell 呼叫時,該選項將無用。但是當從其他程序呼叫時,如果這些參數是從某種形式的使用者輸入構造的,它將簡化傳遞非靜態參數
rpm
的過程(前提是呼叫程序是用一種不會強制呼叫 shell 來執行其他程序的語言編寫的) :
- 當不使用 shell 時,呼叫程序需要自己設置管道並分別呼叫和
rpm
等待CMD
。- 當使用類似
sh -c ´rpm Argument1 Argument2 ...´ | CMD
的 shell 時,如果這些參數可能包含空格或 shell 元字元,則需要在參數周圍加一層引號,以防止它們被拆分為單詞或被 shell 解釋:如果某個參數
rpm
是使用者對呼叫程序的輸入,它可能是Tom and Alice´s dog
,程序員在Tom\ and\ Alice\´s\ dog
為 shell 建構參數列表時必須將其轉換為。(並且任何參數CMD
都必須以相同的方式引用。)這更慢,容易出錯並且可能會引起安全問題。
- 使用該
--pipe
選項時,呼叫程序不需要這些。(但是必須像以前一樣引用to 的任何參數,因為 CMD 是由呼叫 from 的 shell 解釋的,因為它是來自單個參數的單個單詞 to 。)
CMD``rpm``CMD``rpm