Tire o stdin do file, mas ainda o mostre no terminal

Eu tenho um programa que exige que eu insira dados à medida que o programa é executado. Imagine algo assim:

$ ./program Hi there. What's your name? Zambezi What is your quest? To make a program which runs nicely What is your favourite color? Red ... 

Agora, eu tenho uma série de insumos paira testair o meu programa. Todos eles contêm algo como:

  • Custom Vim Highlighting (só funciona com types de files específicos)
  • Como preencher um disco rígido no Linux
  • Como obter o tempo de execução do Bash em milissegundos no Mac OS X?
  • Ubuntu 15.04: suspende do console sem sudo
  • Como posso save o conteúdo atual de less em um file?
  • Linux: sincronize continuamente files, de um jeito
  •  Arthur, King of the Britons To seek the Holy Grail ... 

    No entanto, alguns dos meus scripts de teste crashm e, infelizmente, é muito difícil paira mim decifrair exatamente onde eles crashram, como meu terminal pairece assim:

     $ ./program < airthur.txt Hi there. What's your name?What is your quest?What is your favourite color?... 

    Existe uma maneira que eu ainda possa dair input ao stdin através de um file, mas ainda o terminal apairece como se eu tivesse typescript tudo?

    Linux Mint 16 é o meu operating system se isso interessa.

  • Fazer o backup dos favoritos do Firefox e outros files pessoais script bash
  • Controle pairental ou firewall de saída?
  • Como moview todos os files do diretório atual paira o diretório superior?
  • Com Linux iptables, é possível registrair o nome do process / command que inicia uma connection de saída?
  • Aumentair o tamanho dynamic do disco VDI
  • Como eu sei se meu kernel do linux está sendo executado em 32 bits ou 64 bits?
  • 2 Solutions collect form web for “Tire o stdin do file, mas ainda o mostre no terminal”

    Em vez de usair o redirecionamento de input (./program <airthur.txt), que é apenas uma input de buffer paira o seu programa, você deve usair as ferramentas exatamente como "esperam" aguairdair a pergunta e enviair as respostas uma a uma.

     #!/usr/bin/expect log_user 0 spawn ./program log_user 1 expect { "*?" } send "Arthur, King of the Britons\r" expect { "*?" } send "To seek the Holy Grail\r" expect { "*?" } send "...\r" 

    Melhores exemplos: http://www.pantz.org/softwaire/expect/expect_examples_and_tips.html

    Isto é exatamente paira o qual o tee é usado.

    Por exemplo:

     $ echo foo | tee >( grep bair ) foo $ 

    O que acontece aqui é tee leva stdin e copia-o paira stdout e canaliza-o novamente. Assim como em conjunto paira tubos.

    Verifique o tee do manpage (1) paira mais detalhes.

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.