Linux and Unix tee command tutorial with examples
Tutorial on using tee, a UNIX and Linux command for copying standard input to standard output and making a copy to one or more files. Examples of writing to a file, appending to a file and writing to a privileged file.
What is the tee command in UNIX? ¶
The tee
command in UNIX is a command line utility for copying standard input
to standard output. It supports writing whatever it is given from standard input
to standard output and optional writing to one or more files. The command is
named after T splitter used in plumbing.
How to write to standard output and a file ¶
To write to standard output and a file use tee
after a pipe and specify the
file or files to write to.
echo 'foo' | tee foo.txt
foo
cat foo.txt
foo
This writes the output of the first command to standard output and to a file
called foo.txt
How to write to a file and append output ¶
To use tee
and append to a file rather use the -a
option.
cat foo.txt
foo
echo 'bar' | tee -a foo.txt
bar
cat foo.txt
foo
bar
How to write the state of a pipe ¶
As data flows through UNIX pipelines it can be useful to take a snapshot of the state of the data. This can be for debugging purposes or to take a backup.
ls ~/ | tee pipe1.txt | grep ^b | tee pipe2.txt | sort -r
How to watch log files and write to a file ¶
In this example there is a requirement to analyse the HTTP2 traffic going
through an nginx server. Using tee
the live logs can be streamed to standard
output and also write to a file for further analysis later.
tail -f /var/log/nginx/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log
How to write to a privileged file using tee ¶
To write to a privileged file tee
may be used as part of a pipe to elevate to
sudo permissions.
Suppose we have a file
owned by root. Trying to append to this file as a
normal user results in a permissions error.
echo 'foo' >> file
zsh: permission denied: file
As part of a pipe tee
can take the input, elevate permissions and write to the
file.
echo "foo" | sudo tee -a file
Further reading ¶
Tags
Can you help make this article better? You can edit it here and send me a pull request.
See Also
-
Linux and Unix uniq command tutorial with examples
Tutorial on using uniq, a UNIX and Linux command for reporting or filtering repeated lines in a file. Examples of showing a count of occurrences, showing only repeated lines and ignoring characters and specific fields. -
Linux and Unix cut command tutorial with examples
Tutorial on using cut, a UNIX and Linux command for cutting sections from each line of files. Examples of cutting by character, byte position, cutting based on delimiter and how to modify the output delimiter. -
Linux and Unix sort command tutorial with examples
Tutorial on using sort, a UNIX and Linux command for sorting lines of text files. Examples of alphabetical sorting, reverse order sorting, sorting by number and mixed case sorting.