Я хотел бы иметь возможность ввести начальную команду в запуск интерактивного процесса, чтобы я мог сделать что-то вроде этого:
echo "initial command" | INSERT_MAGIC_HERE some_tool
tool> initial command
[result of initial command]
tool> [now I type an interactive command]
Что не работает:
-
Простое соединение исходной команды не работает, так как это приводит к тому, что stdin не подключается к терминалу
-
Запись в/dev/pts/[число] отправляет вывод на терминал, а не вход в процесс, как если бы он был с терминала
Что было бы с недостатками:
-
Сделайте команду, которая разворачивает ребенка, записывает его в stdin, а затем перенаправляет все из своего собственного stdin. Даунсайд - элементы управления терминалом (например, режим линии против символьного) не будут работать. Может быть, я мог бы сделать что-то с проксированием псевдотерминалов?
-
Создайте модифицированную версию xterm (в любом случае я запускаю ее для этой задачи) с параметром командной строки, чтобы вставлять дополнительные команды после получения нужной строки приглашения. Некрасиво.
-
Сделайте модифицированную версию инструмента, который я пытаюсь запустить, чтобы он принял начальную команду в командной строке. Нарушает стандартную установку.
(Инструмент текущего интереса, кстати, является оболочкой adroid adb - я хочу открыть интерактивную оболочку на телефоне, запустить команду автоматически, а затем провести интерактивный сеанс)