My aim is to log all output from a script into a directory that the script is going to create.
For example, I have:
~/.abc.sh
:
#! /bin/bash
rails new myapp
When I run…
cd ~/code
. ~/.abc.sh
…that will create a new Rails app in directory ~/code/myapp
.
When Rails is creating an app, it outputs a whole lot of text that I want to capture and store in a log file in the same directory the rails
command newly created. I also want to display that text in the terminal as well.
How do I go about doing this?
Best Answer
You can use the
tee
command for that:The equivelent without writing to the shell would be:
If you want to append (
>>
) and show the output in the shell, use the-a
option:Please note that the pipe will catch stdout only, errors to stderr are not processed by the pipe with
tee
. If you want to log errors (from stderr), use:This means: run
command
and redirect the stderr stream (2) to stdout (1). That will be passed to the pipe with thetee
application.