Recently, we needed to start an application using a script, which application had its own CLI.
After starting it, we had to feed it with some input to configure it before handing it over to the end user.
The application we used was named
dog. We wrote into a plain text file (named
food) the commands that we needed to feed the application and then we started the execution using a plain input redirect like so
dog < food;.
Doing so, resulted into properly feeding the
dog application the
food data but it would cause the application to terminate immediately after the
food was done as it would also feed the
End Of File) directive to
Apparently, the application after receiving the
EOF, it would then terminate without allowing the end user to take control.
To mitigate the problem, we used the
cat command to concatenate the input file along with the
stdin stream, permitting us to first feed all the data in the
food file and then allow the user to input data using the standard input stream.
Our final command resulted in the following solution as below
cat <(cat food) - | dog;
- is the special sign for standard input
cat food can be of course replaced with other commands that produce output on the standard output (
A bad side-effect of this solution, is that we lost some functionality of the terminal including, but not limited to, using the backspace and navigation.