的Linux管我不知道如何創建一個管道與多個程序要求用戶輸入
program 1 | ... | program N
在程序的多個要求用戶輸入。問題是|
並行啓動程序,因此它們開始從終端並行讀取。
對於這樣的情況,只有在程序i產生了一些輸出後,纔有一個管道|
啓動程序(i + 1)會很有用。
編輯:
例子:
cat /dev/sda | bzip2 | gpg -c | ssh [email protected] 'cat > backup'
這裏既有gpg -c
以及ssh
詢問密碼。
對於這個特定的例子,一個解決方法是創建ssh密鑰對,但這在每個系統上都是不可能的,我想知道是否有一個通用的解決方案。 此外,gpg允許將口令作爲命令行參數傳遞,但出於安全原因不建議這樣做。
一旦一個程序連接到一個管道,它從另一個程序,而不是用戶的輸入。你確定你想要一個管道嗎?我無法真正想到一個程序,它們都需要用戶輸入*和*從標準輸入讀取。 – chepner 2012-08-02 22:32:23
不是一個答案,而是一個可能指向正確方向的想法:是否可以在每個程序周圍包含代碼,以檢查特定字符串的輸出,更新一次發現的標誌並讓其他調用循環直到前一個程序的標誌爲止更新,然後讓他們跑? – JohnLBevan 2012-08-02 22:53:00
顯示這種情況的具體示例。一個程序可以從'stdin'和'/ dev/tty'中讀取,但這是不常見的。 – 2012-08-03 01:01:44