When working with the Linux terminal, you might need to execute a command to write some data to a file and still process its output further. One powerful utility that can help you achieve that is the tee
command.
This post will give you a detailed guide about the tee command and show you some real-world examples of the tee command.
Table of Contents
What is Tee Command?
The tee
command is a Linux command that will copy standard input to both the standard output, usually your screen, and the specified file. That is useful for piping commands together and comes quite handy when you want to redirect output to single or multiple files and still process the output further. The tee
command got its name from the T-splitter used by plumbers when connecting several water pipes.
This might sound a little complicated if you are not well-versed with the Linux terminal. Let’s try using a graphical demonstration.
Let’s say we had a file called employees.txt
. We want to sort this text file, write the output to a file, and show the total number of items on the terminal. The long method of doing this would be to use the two commands shown below:
sort employees.txt > sortedEmployeeFile.txt wc -l sortedEmployeeFile.txt
However, we can simplify it by using the tee command below.
sort employees.txt | tee sortedEmployeeFile.txt | wc -l
Installing Tee Command
The tee
command is among the tools installed with the GNU Coreutils. Therefore, it comes pre-installed on any Linux distribution – you don’t need to install it manually. However, you can confirm whether the utility is available by running the command below
which tee
To check the version of the tee command running on your system, run the command below.
tee --version
Basic Syntax for Tee Command
The basic syntax for the tee command is as follows:
tee [OPTIONS]... [FILE]...
The [OPTIONS] here may include:
-a
: Prevents tee command from overwriting an existing file but instead append the data.--version
: This option shows you the currently installed version of the tee command.--help
: This option lists all the options available for the tee command
Tee Command Applications.
Now that you have a good understanding of the Tee command, let’s look at some real-world examples where you can apply this powerful command-line utility.
1. Write the Output of Ping Command to a File
You must have come across the ping command, especially when diagnosing your network connection. Ping is used for testing the availability of a host on the network. For example, if you are configuring a server, you can check whether it’s online by executing a command like
ping [server-address]
e.g.,
ping 192.168.1.60
Now, if we want to write this output to a file while still displaying the response from the server, we can execute the command below.
ping google.com | tee pingTest.txt
The image below shows the ping output written to a file as well as a stdout
.
2. Use Tee Command to Append Data to a File
By default, when you execute the tee
command to write output to an existing file, it will automatically overwrite all the existing data. For example, tee
will automatically overwrite the existing data if we run a new ping command with the same filename for writing the output. We will use the -a
option as shown in the syntax below to prevent this.
ping -a [fileName] ping 192.168.1.60 | tee -a pintTest.txt
3. Write to Multiple Files Using Tee
This is pretty easy if you have used other Linux commands to manipulate multiple files. To write to several files using the tee
command, we will use the syntax below.
[your command] | tee file1 file2 file3 file4
4. Redirect Command Output to Another Command with Tee
Other than just writing output to a file, you can use the tee
command to redirect the output of one command to another. Let’s use the example below.
We want to list all the files in the home directory using the ls
command then count the total number of files present using the wc -l
command. Instead of writing two different commands, we can use a one-liner command thanks to tee
, as shown below.
ls ~ | tee output.txt | wc -l
5. Ignore Interrupt when Executing Tee
To stop any command running in the terminal, we always use the Ctrl + C
keyboard combination to interrupt the process. If you are running a crucial task with Tee, you can prevent keyboard interrupt (SIGINT
) using the -i
option.
Use the syntax below.
[command] | tee -i [file-name]
6. Hide Tee Output
There are times when you execute a command that prints so much unnecessary output in the terminal. Luckily, you can hide the output by redirecting it to the /dev/null
. Use the syntax below.
[command] | tee output_file_name >/dev/null
In the image below, you can see we executed the ping command, but no output is printed in the terminal. However, it has all been written to the specified output file.
7. Use Tee with Sudo
There are situations where you would want to write data to a file owned by the root user. Let’s call this file website.conf
. If we execute the command below, we will get the error – -bash: website.conf: Permission denied
.
echo "newline" > website.conf
To solve this, we can use the Tee command to prepend sudo
in our command, as shown below.
echo "newline" | tee -a website.conf
Conclusion
Up to this point, I believe you now have a good understanding of the tee command and how you can use it to perform your day-to-day tasks. By practicing a few more examples on your system, you should be good to go. If you have any feedback or questions then please feel free to let us know in the comments and we’ll get back to you as soon as possible.