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.
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.
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:
The cat command confirms that tee
successfully wrote the output of ifconfig
to the file example.txt
:
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:
Confirm the successful addition with the cat
command:
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:
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:
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”:
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
:
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 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:
To override this error, type the following into Vim:
:w !sudo tee %
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:
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:
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.