- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Introduction to tee Command in Linux
Introduction
The tee command is a commonly used command in Linux. It is a simple yet powerful command that is used to read standard input, then write it to a file, and also to standard output. tee command takes its name from T-splitter used in plumbing, which splits a stream of water into two streams.
The tee command is a part of coreutils package in Linux, and it is pre-installed on almost all Linux distributions. tee command is useful for a wide variety of tasks, such as creating backups, debugging scripts, and monitoring system logs.
In this article, we will discuss basics of tee command, how it works, and several examples of how to use it.
Basic Syntax
The basic syntax for tee command is as follows −
tee [OPTION]... [FILE]...
The tee command takes one or more options, which are preceded by a dash (-), and one or more filenames. filenames specify files that tee command will write standard input to.
By default, tee will overwrite any existing files. However, you can use -a option to append standard input to end of specified files.
Options
Here are some of most commonly used options for tee command −
-a, --append
This option appends standard input to end of specified files instead of overwriting them.
-i, --ignore-interrupts
This option ignores interrupt signals (such as Ctrl+C) and continues running.
-p, --output-error
This option prevents tee command from exiting on write errors.
--help
This option displays help message for tee command.
--version
This option displays version number of tee command.
Examples
Here are some examples of how to use tee command −
Example 1: Write standard input to a file
The most basic usage of tee command is to write standard input to a file. Here's an example −
$ echo "Hello, world!" | tee hello.txt Hello, world! $ cat hello.txt Hello, world!
In this example, we use echo command to write "Hello, world!" to standard output. We then use pipe operator (|) to send standard output to tee command. tee command writes standard input to file hello.txt and also outputs it to standard output.
Example 2: Append standard input to a file
If you want to append standard input to a file instead of overwriting it, you can use -a option. Here's an example −
$ echo "Hello, world again!" | tee -a hello.txt Hello, world again! $ cat hello.txt Hello, world! Hello, world again!
In this example, we use echo command to write "Hello, world again!" to standard output. We then use tee command with -a option to append standard input to file hello.txt. tee command outputs standard input to standard output, and we use cat command to display contents of file hello.txt.
Example 3: Redirect standard error to a file
The tee command can also be used to redirect standard error to a file. Here's an example −
$ ls /does/not/exist 2>&1 | tee error.log ls: cannot access '/does/not/exist': No such file or directory $ cat error.log ls: cannot access '/does/not/exist': No such file or directory
In this example, we use ls command to list contents of a non-existent directory, which results in an error message being written to standard error. We then use pipe operator to send standard error to tee command, which writes it to file error.log and also outputs it to standard output.
Example 4: Create multiple files at once
The tee command can also be used to create multiple files at once. Here's an example −
$ echo "Hello, Linux!" | tee file1.txt file2.txt file3.txt Hello, Linux! $ cat file1.txt Hello, Linux! $ cat file2.txt Hello, Linux! $ cat file3.txt Hello, Linux!
In this example, we use echo command to write "Hello, Linux!" to standard output. We then use tee command with multiple filenames separated by spaces to write standard input to files file1.txt, file2.txt, and file3.txt. tee command outputs standard input to standard output, and we use cat command to display contents of each file.
Example 5: Tee and grep
The tee command can be combined with grep to search for a pattern in a file and write matching lines to both a file and standard output. Here's an example −
$ cat example.txt Hello, Linux! Welcome to world of open-source. Linux is a powerful and versatile operating system. $ cat example.txt | grep Linux | tee filtered.txt Hello, Linux! Linux is a powerful and versatile operating system. $ cat filtered.txt Hello, Linux! Linux is a powerful and versatile operating system.
In this example, we use cat command to display contents of file example.txt. We then use pipe operator to send standard output to grep command, which searches for pattern "Linux" in input. grep command outputs matching lines to standard output, and we use tee command to write matching lines to file filtered.txt and also output them to standard output.
Example 6: Tee and awk
The tee command can also be combined with awk to process and manipulate data in a file before writing it to another file. Here's an example −
$ cat data.csv 1,John,Doe 2,Jane,Smith 3,Bob,Johnson $ cat data.csv | awk -F ',' '{print $2}' | tee names.txt John Jane Bob $ cat names.txt John Jane Bob
In this example, we use cat command to display contents of file data.csv. We then use pipe operator to send standard output to awk command, which processes data and prints second field of each line (which contains name) to standard output. We use tee command to write output to file names.txt and also output it to standard output.
Example 7: Tee and SSH
The tee command can also be used with SSH to write standard input to a file on a remote server. Here's an example −
$ echo "Hello, Linux!" | ssh user@remotehost "tee hello.txt" Hello, Linux! $ ssh user@remotehost "cat hello.txt" Hello, Linux!
In this example, we use echo command to write "Hello, Linux!" to standard output. We then use pipe operator to send standard output to ssh command, which connects to remote server and runs tee command to write standard input to file hello.txt. We use ssh command again to run cat command on remote server and display contents of file hello.txt.
Conclusion
In conclusion, tee command is a useful and powerful tool in Linux. It allows you to write standard input to one or more files while also outputting it to standard output. tee command can be used for a variety of tasks, such as creating backups, debugging scripts, and monitoring system logs.
In this article, we discussed basic syntax and options of tee command and provided several examples of how to use it. By mastering tee command, you can become a more efficient and productive Linux user.