linux pipe с несколькими программами, запрашивающими ввод данных пользователем

Интересно, как создать трубу

program 1 |... | program N

где несколько программ запрашивают ввод данных пользователем. Проблема в том, что |запускает программы параллельно и, таким образом, они начинают читать с терминала параллельно.

Для таких случаев было бы полезно иметь конвейер |, который запускает программу (i+1 )только после того, как программа i произвела некоторый вывод.

Изменить:

Пример:

cat /dev/sda | bzip2 | gpg -c | ssh user@host 'cat > backup'

Здесь как gpg -c, так и sshзапрашивают пароль.

Обходной путь для этого конкретного примера — создание пар ключей ssh, но это возможно не в каждой системе, и мне было интересно, существует ли общее решение. Также gpg позволяет передавать фразу-пароль в качестве аргумента командной строки, но это не рекомендуется из соображений безопасности.

6
задан Joerg Endrullis 3 August 2012 в 07:41
поделиться