5

Мне нужно добиться определенного эффекта, используя средства перенаправления bash .

Я знаю, что могу перенаправить файл на стандартный ввод какой-либо программы:

[user@host]$ application < file.txt

Дело в том, что я хотел бы знать, могу ли я восстановить контроль над вводом этой программы после того, как содержимое файла было передано ей. Другими словами, я хотел бы запустить команду, аналогичную приведенной выше, и затем вместо завершения приложения я бы хотел, чтобы она ожидала дальнейших команд со стандартного ввода (клавиатура).

Когда я писал этот вопрос, мне пришло в голову, что я, вероятно, мог бы написать другое приложение (или скрипт), которое сначала записало бы некоторые данные в стандартный вывод, а затем действовало бы как эхо, например:

[user@host]$ stdin_proxy.sh | application

Будет ли это работать, и есть ли лучший способ сделать это? Существует множество учебных пособий по Googleable, посвященных этой проблеме, но все они сводятся к одному совету - "снова откройте стандартный ввод после прочтения содержимого файла". Но у меня нет доступа к исходному коду application .

1 ответ1

6

cat может сделать это достаточно легко.

cat file.txt - | application

Обратите внимание, что это не обманет приложение, заставив его думать, что оно действительно подключено к терминалу; для этого тебе понадобится unbuffer .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .