Table of contents
What does tee do?
tee copies standard input to standard output. It supports writing whatever it is given from standard input to standard output and also writing to one or more files. The command is named after T splitter used in plumbing.
How to display output and save to a file
To display output and save to 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
How to save to a file and append output
tee and append to a file rather use the
cat foo.txt foo echo 'bar' | tee -a foo.txt bar cat foo.txt foo bar
How to save 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