Is there any significance to using tee?
There is a difference: tee duplicates the output: it sends it both to the file and to the display.
But there is more:
-
For example, if you want to write some string into two files at once, the command with tee you can use is:
echo "some text" | tee file1 > file2
-
Another thing tee can help you is to avoid one problem when using sudo. The normal output redirection operator is always executed with your user privileges, also when you write a sudo in front of the command which generates the STDOUT text. In other words, this will fail if you dont have the permission to write to that file:
sudo echo "something" > bar
But with tee, everything will go well:
echo "something" | sudo tee bar
2 examples from this site. It has some more.
tee
takes the standard input stream and writes it to both the standard output stream as well as a file stream. If it helps people remember, the command name comes from a T-splitter in plumbing. There is a nice Wikipedia article where I learned about the origin of the command name.
First of all, tee
itself doesn't append text, nor does >
.
It is tee -a
and its complement, >>
that APPENDS text.
I don't believe all shells support the >>
function, so that is why tee
is more commonly used. (Think of just plain old sh
). Tee is a command, while >>
is an operator.
If you use (my personal favorite) bash
, >
and >>
are much nicer/easier.
Using tee
also allows you to sudo JUST that command so you don't have to sudo the entire statement, as in sudo sh -c "echo foo > bar"
. tee
also allows you to split the output. Of course, all of this can be seen in man tee
. It's mainly just your personal preference.
For further reading, see here and here.