unix shell, redirect output but keep on stdin
-
27-09-2019 - |
Question
I'd like to have a shell script redirect stdout of a child process in the following manner
- Redirect stdout to a file
- Display the output of the process in real time
I know I could do something like
#!/bin/sh
./child > file
cat file
But that would not display stdout in real time. For instance, if the child was
#!/bin/sh
echo 1
sleep 1
echo 2
The user would see "1" and "2" printed at the same time
Solution
Use tee
:
./child | tee file
tee
will copy its standard input to any file on the command line and to standard output as well.
OTHER TIPS
I use: sponge, from moreutils http://linux.die.net/man/1/sponge
you can do something like that:
$ grep something largefile | sponge largefile
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow