The tee command reads standard input (stdin)
and writes the result to standard output (stdout)
and one or more files simultaneously.
It basically displays the command output on the terminal and at the same time redirects the output to a file. I often used tee command to append a new line to the root user files.
In this article, we’ll show how to use the tee command on Linux.
The basic syntax for the tee command is:
[command] | tee [options] [filename]
1) Basic usage of tee command
One of the basic uses of the tee command is to display the standard output (stdout) of a command and save it in a file. For instance, we have executed the ‘hostnamectl’ command to print our system’s hostname and other details, then save the standard output to ‘host_info.txt’.
$ hostnamectl | tee host_info.txt Static hostname: 2daygeek Icon name: computer-laptop Chassis: laptop Machine ID: 7a138ee71db94e8785d1a4dbe54dde7e Boot ID: 34d27941b74941a9a29bc424f66613bc Operating System: openSUSE Leap 15.2 CPE OS Name: cpe:/o:opensuse:leap:15.2 Kernel: Linux 5.3.18-lp152.75-default Architecture: x86-64
The content of the ‘host_info.txt’ file can be viewed using the cat command as follows:
$ cat host_info.txt
2) Write output to multiple files
This can also write output to multiple files. To do so, add a list of files separated by space as arguments.
$ command | tee file1 file2…fileN
3) Append output to a file
By default, the tee command overwrites the contents of a file, each time you run it. To append output, use the '-a or --append'
option.
$ command | tee -a file
4) Ignore Interrupts
This option allows tee command to exit gracefully when the command has been interrupted with (CTRL+C) during execution. To do so, use the '-i or --ignore-interrupts'
option
$ command | tee -i file
For example: The tee command writes the ping command output properly even after ping is interrupted with 'Ctrl+C'
:
5) Hide the output
If you don’t want to print the command result to a standard output, use the following format:
$ command | tee file >/dev/null
6) Using tee with sudo
The tee command allows you to write a file owned by root user or others. For example, if you want to append a new line to the below file, you will be getting “permission denied” error because the redirection of the output is not performed by sudo.
$ sudo echo "add a newline" > /etc/sudoers
bash: /etc/sudoers: Permission denied
To do so, use the tee command as follows:
$ echo "add a newline" | sudo tee -a /etc/sudoers
7) Use of tee command in shell script
The tee command can often be used in shell scripts to redirect the output to a file as shown below:
$ vi /tmp/testbash.sh #!/bin/bash LOGFILE=/tmp/test-logs-$(date +%d%m%Y) echo "Append the logs routinely" | tee -a $LOGFILE
Closing Notes
In this guide, we’ve shown you how to use tee command in Linux.
If you have any questions or feedback, feel free to comment below.