How to Use the Linux tee Command

Introduction

The Linux tee command is a useful tool for redirecting output from one command to multiple destinations. It can be used to save the output of a command to a file, while also displaying it on the screen. It can also be used to pipe the output of one command to another. In this tutorial, we will discuss the basics of the Linux tee command and how to use it.

How to Use the Linux tee Command

The Linux tee command is a useful tool for redirecting output from one command to multiple destinations. It can be used to save the output of a command to a file, while also displaying it on the screen.

To use the tee command, simply type “tee” followed by the name of the file you want to save the output to. For example, if you wanted to save the output of the “ls” command to a file called “list.txt”, you would type:

ls | tee list.txt

This will save the output of the “ls” command to the file “list.txt”, while also displaying it on the screen.

You can also use the tee command to redirect the output of multiple commands to the same file. For example, if you wanted to save the output of the “ls” and “df” commands to the same file, you would type:

ls | tee -a list.txt

df | tee -a list.txt

The “-a” option tells the tee command to append the output of the command to the end of the file, rather than overwriting it.

The tee command can also be used to redirect the output of a command to multiple files. For example, if you wanted to save the output of the “ls” command to two files, you would type:

ls | tee list1.txt list2.txt

This will save the output of the “ls” command to both “list1.txt” and “list2.txt”.

The tee command is a powerful and versatile tool for redirecting output from one command to multiple destinations. It can be used to save the output of a command to a file, while also displaying it on the screen, or to redirect the output of multiple commands to the same file.

Introduction

When the user executes a command in a Linux interactive shell, the output displays in the text terminal. However, there are ways to change this behavior using additional shell commands connected in a pipeline.

In this tutorial, you will learn how to use the tee command in Linux to manage the output of a command.

How to Use the Linux tee Command

Prerequisites

  • A system running Linux
  • Access to the command line or terminal
  • Sudo privileges

What Does tee Command Do in Linux?

The tee command reads standard input (stdin) and writes it to both standard output (stdout) and one or more files. tee is usually part of a pipeline, and any number of commands can precede or follow it.

Graphical representation of the tee command operation

Note: To process standard inputs in Linux, you can use the xargs command which can be used in combination with other commands.

tee Commands in Linux With Examples

The tee command is used alone or with additional options. The following sections list the available options and provide command usage examples.

Basic Use

The basic syntax for the tee command is:

[command] | tee [options] [filename]

The example below demonstrates the use of tee to create a file that stores information about a network interface while providing the same output in the terminal:

Writing the output from ifconfig to a file using the tee command

The cat command confirms that tee successfully wrote the output of ifconfig to the file example.txt:

Confirming the success of the tee command using the cat command

If the file used for the command already exists, tee overwrites the previous contents of the file.

Append to the Given File

Overwriting the file’s content is the default behavior of the tee command. Use argument -a (or --append) to add the command output to the end of the file.

[command] | tee -a [filename]

For example, use the echo command to append a line of text to a file:

Appending the output of the echo command using the tee -a command

Confirm the successful addition with the cat command:

Using the cat command to confirm the successful addition of the output of the echo command to the file

Write to Multiple Files

Use tee followed by any number of files to write the same output to each of them:

[command] | tee [options] [filename1] [filename2]...

The example below shows writing the output of the echo command to two files:

Adding the output of the echo command to two files using tee

The ls command shows that tee successfully created files example1.txt and example2.txt.

Hide the Output

To tell tee to store the command output in a file and skip the terminal output, use the following syntax:

[command] | tee [options] [filename] >/dev/null

In the example bellow, tee creates a file containing the network interface data, skipping the standard output:

Skipping the standard output and writing only to a file using tee

Redirect Output of One Command to Another

tee does not have to be the last command in the pipeline. Use it to forward the output to another command:

[command] | tee [options] [filename] | [command]

In the following example, tee stores the output of the ls command to example.txt and passes the content of that file to the grep command, which finds and displays all instances of the word “example”:

Passing the output of the ls command to the grep command using tee

Ignore Interrupts

To enable tee to exit properly even after the previous command has been interrupted, add the argument -i (or --ignore-interrupts):

[command] | tee -i [filename]

The next example shows tee writing output from the ping command and completing the action successfully even after ping is interrupted with Ctrl+C:

Successful completion of the tee command after the ping command is interrupted

Using tee with Sudo

To enable tee to write to a root-owned file or file belonging to another user, place the sudo command right before tee.

[command] | sudo tee [options] [filename]

The example below shows an unsuccessful attempt to write to the root-owned sudoex.txt. When the sudo command is added, the operation completes:

Using the sudo command to obtain write access for the tee command

Using tee in Vim Editor

If you open and edit a root-owned file in Vim without using the sudo command, trying to save changes produces an error:

Attempting to save a root-owned file in Vim

To override this error, type the following into Vim:

:w !sudo tee %
Granting sudo permissions to tee in Vim

After you enter the sudo password, Vim displays a warning but writes the changes to the file.

Diagnose Errors Writing to Non-Pipes

To instruct tee to print an error message when the process fails, use the -p argument:

[command] | tee -p [filename]

The default action of tee -p is to exit and print the error message immediately upon detecting the error writing to a pipe. To change the command’s behavior on write error, use the --output-error argument, followed by the mode specifying the behavior:

[command] | tee --output-error=[mode] [filename]

There are four possible modes:

  • warn – diagnoses errors writing to any output.
  • warn-nopipe – diagnoses errors writing to any non-pipe output.
  • exit – exits on errors writing to any output.
  • exit-nopipe – exits on errors writing to any non-pipe output.

Use tee Command with Bash Script

The tee command is often found in bash scripts. Consider the following example:

Editing a bash script containing the tee command

The script above prints the “Hello World” message and stores the output in a log file. Executing the script creates a log file in the tmp folder. The log contains the output of the script:

Confirming the successful creation of the log file and checking its contents

Watch Log Files

Writing script output to a log file is usually performed with the >operator:

./testbash.sh > testbash.log

The command above creates a log file but does not write anything to standard output.

Use tee to create a log file and see the output in the terminal:

./testbash.sh | tee testbash.log

See Help and Version Information

See the current version of the tee command by typing:

tee --version

For the instructions regarding the tee command syntax and the available arguments, use the command’s help argument:

tee --help

Conclusion

By reading this tutorial, you learned how to use the tee command in a pipeline to manage the command output. The article also talked about the use of tee in bash scripts.

Read more about shell commands in this Linux commands cheat sheet.

How to Use the Linux tee Command

The Linux tee command is a useful tool for redirecting output from one command to multiple destinations. It can be used to save the output of a command to a file, while also displaying it on the screen. This article will explain how to use the Linux tee command.

Syntax

The syntax for the Linux tee command is as follows:

tee [OPTION]... [FILE]...

Options

The Linux tee command has several options that can be used to modify its behavior. These include:

  • -a: Append the output to the specified files, instead of overwriting them.
  • -i: Ignore the SIGINT signal.
  • -p: Display the name of each file before writing to it.

Examples

Here are some examples of how to use the Linux tee command:

  • To save the output of a command to a file, while also displaying it on the screen:
    command | tee output.txt
  • To save the output of a command to multiple files:
    command | tee file1.txt file2.txt file3.txt
  • To append the output of a command to a file:
    command | tee -a output.txt

Conclusion

The Linux tee command is a useful tool for redirecting output from one command to multiple destinations. It can be used to save the output of a command to a file, while also displaying it on the screen. This article has explained how to use the Linux tee command.

Jaspreet Singh Ghuman

Jaspreet Singh Ghuman

Jassweb.com/

Passionate Professional Blogger, Freelancer, WordPress Enthusiast, Digital Marketer, Web Developer, Server Operator, Networking Expert. Empowering online presence with diverse skills.

jassweb logo

Jassweb always keeps its services up-to-date with the latest trends in the market, providing its customers all over the world with high-end and easily extensible internet, intranet, and extranet products.

Contact
San Vito Al Tagliamento 33078
Pordenone Italy
Item added to cart.
0 items - 0.00
Open chat
Scan the code
Hello 👋
Can we help you?