Voltando ao “stdin” após redirecionar um arquivo para um programa em particular

5

Eu preciso alcançar um efeito específico usando os recursos de redirecionamento de bash .

Eu sei que posso redirecionar um arquivo para a entrada padrão de algum programa:

[user@host]$ application < file.txt

O problema é, eu gostaria de saber se posso recuperar o controle da entrada deste programa depois que o conteúdo do arquivo foi passado para ele. Em outras palavras, gostaria de executar um comando semelhante ao descrito acima e, em vez do término do aplicativo, eu gostaria que ele aguardasse por mais comandos da entrada padrão (teclado).

Enquanto escrevo esta pergunta, ocorreu-me que provavelmente eu poderia escrever outra aplicação (ou um script), que primeiro gravaria alguns dados na saída padrão e então atuaria como echo, como:

[user@host]$ stdin_proxy.sh | application

Funcionaria e há alguma maneira melhor de fazer isso? Há um monte de tutoriais Googleable que cobrem este problema, mas todos eles constituem um conselho - "reabra o stdin depois que o conteúdo do arquivo for lido". No entanto, eu não tenho acesso ao código-fonte de application .

    
por Neo 23.11.2010 / 00:12

1 resposta

6

cat pode fazer isso com bastante facilidade.

cat file.txt - | application

Observe que isso não enganará o aplicativo, pois ele está realmente conectado a um terminal; você precisará do unbuffer isso.

    
por 23.11.2010 / 00:22