Tee Command - Redirect and Duplicate Output | Online Free DevTools by Hexmos

Redirect and duplicate command output with the Tee command. Save to file and display on terminal simultaneously. Free online tool for developers.

Tee Command

The tee command in Unix-like operating systems is a powerful utility that reads from standard input and writes to both standard output and one or more files. This allows you to duplicate the output of a command, saving it to a file while also displaying it on your terminal for immediate review. It's incredibly useful for logging or for processing output further while still seeing it in real-time.

Redirect and Duplicate Output

The primary function of the tee command is to duplicate the stream of data it receives. This is particularly handy when you want to capture the output of a command for later analysis or archival, but also need to see the results as they are generated.

Saving Command Output to a File

You can use tee to save the output of any command to a specified file. If the file already exists, tee will overwrite it by default. This is a common way to log the results of scripts or complex command sequences.

Appending to Output Files

For scenarios where you want to add to an existing log file rather than overwrite it, the -a option with tee is invaluable. This ensures that new output is appended to the end of the file, preserving historical data.

Teeing to Terminal and Piping to Another Program

A more advanced use case involves teeing the output to the terminal (/dev/tty) and simultaneously piping it to another command for further processing. This enables complex workflows where you need to visualize intermediate results while also feeding them into subsequent operations.

# To tee stdout to <outfile>:
ls | tee <outfile>

# To tee stdout and append to <outfile>:
ls | tee -a <outfile>

# To tee stdout to the terminal, and also pipe it into another program for further processing:
ls | tee /dev/tty | xargs printf "\033[1;34m%s\033[m\n"

Understanding Tee Command Usage

The examples above demonstrate the flexibility of the tee command. The first example shows how to redirect the output of ls to a file named <outfile>, which will also be displayed on your terminal. The second example uses the -a flag to append the output to <outfile>. The third, more complex example, illustrates how to display the output in color on the terminal while also piping it to xargs for further formatting.

Benefits of Using Tee

Using the tee command offers several benefits for developers and system administrators. It simplifies the process of logging command outputs, aids in debugging by allowing real-time observation of data streams, and enables more sophisticated command-line pipelines. Its straightforward syntax makes it an accessible tool for managing command output effectively.