I want to run two executables in the foreground by typing one line of code or running a shell script. These executables watch a directory and recompile some code while outputting their status to stdout.

I want the stdout to be presented in the same way as following two files in 'tail' like so:

tail -f foo.txt -f bar.txt

==> foo.txt <==

==> bar.txt <==
Something else

When something changes it prints the filename before printing the output. It only prints the filename when it needs to indicate that the output is coming from the other file.

  • 4
    You haven't actually asked a question. I'm not trying to be rude, but I honestly don't know what your question is after reading that. Jun 12, 2012 at 6:45
  • Sorry about that. I've added some more detail.
    – vaughan
    Jun 13, 2012 at 1:40

2 Answers 2


Since the two executables write to standard output, you may be able to just tail the files produced by process substitution:

tail -f <( executable_one ) <( executable_two )

(Only one -f needed, by the way. It's a global option, not something you need to specify for each file.)

Each of the two executables runs separately, and its output is captured and redirected to a file handle which is passed tail. In the output, the file names will appear as something like "/dev/fd/63". Unfortunately, I don't know of a way to get tail to use an alternate name (like with grep and the --label option).


See this Geek Stuff article: "3 Methods To View tail -f output of Multiple Log Files in One Terminal".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.