Is there an easy way to merge stdin and stdout? For instance suppose I
have script that prompts for a number and prints the number. If you
execute this with redirection from a file say input.txt with 42 in the
file, then executing
./myscript < input.txt > output.txt
the output.txt might look like this:
Enter a number:
You entered 42.
What I want is to have an easy way to merge input.txt and the stdout
so that output.txt look like:
Enter a number: 42
You entered 42.
Here, the first 42 is of course from input.txt.
Thanks.
-jon
It sounds like you might be looking for script(1)?
Jean-Paul
Hi Jean-Paul,
I tried it. But stdin is not merged in with stdout. Maybe I'm using
script wrongly? This is what I've done. I have a python script y.
Here's what it looks like when I run it and I entered "sss":
$ ./y
gimme x:sss
you entered sss
Now I'm going to use the script command. I'm using an input file
input.txt that contains just the string "hello".
$ script -c "./y < input.txt" output.txt
Script started, file is output.txt
gimme x:you entered hello
Script done, file is output.txt
And when I view output.txt this is what I see:
$ less output.txt
Script started on Thu Feb 4 22:28:12 2010
gimme x:you entered hello
Script done on Thu Feb 4 22:28:13 2010
As you can see the stdin is not printed. What I'd really wanted was
something like this in output.txt:
gimme x:hello
you entered hello
-jon
>> >What I want is to have an easy way to merge input.txt and thestdout
>> >so that output.txt look like:
>>
>> >Enter a number: 42
>> >You entered 42.
>>
>> >Here, the first 42 is of course from input.txt.
>>
>> It sounds like you might be looking forscript(1)?
>
> $ script -c "./y < input.txt" output.txt
> Script started, file is output.txt
> gimme x:you entered hello
> Script done, file is output.txt
Try moving the redirection out of the command:
$ script -c ./y output.txt < input.txt
--
Gabriel Genellina
The result is the same as before. I've tested in fedora11.
-jon
> The result is the same as before. I've tested in fedora11.
I don't think script is the answer here, since it only stores what's
displayed on a terminal and your program's input comes from a file and
is not displayed on the terminal.
Simplest solution is probably that you have your program echo every
line of input. Maybe some hairy terminal trickery could be done?
Really more of a Linux question than python.