Tee (command)
   HOME

TheInfoList



OR:

In computing, tee is a
command Command may refer to: Computing * Command (computing), a statement in a computer language * COMMAND.COM, the default operating system shell and command-line interpreter for DOS * Command key, a modifier key on Apple Macintosh computer keyboards * ...
in command-line interpreters ( shells) using standard streams which reads standard input and writes it to both standard output and one or more files, effectively duplicating its input. It is primarily used in conjunction with pipes and
filters Filter, filtering or filters may refer to: Science and technology Computing * Filter (higher-order function), in functional programming * Filter (software), a computer program to process a data stream * Filter (video), a software component tha ...
. The command is named after the T-splitter used in plumbing.


Overview

The tee command is normally used to ''split'' the output of a program so that it can be both displayed and saved in a file. The command can be used to capture intermediate output before the data is altered by another command or program. The tee command reads
standard input In computer programming, standard streams are interconnected input and output communication channels between a computer program and its environment when it begins execution. The three input/output (I/O) connections are called standard input (stdin ...
, then writes its content to standard output. It simultaneously copies the data into the specified file(s) or variables. The syntax differs depending on the command's implementation.


Implementations

The command is available for
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
and
Unix-like A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
s, Microware OS-9, DOS (e.g.
4DOS 4DOS is a command-line interpreter by JP Software, designed to replace the default command interpreter COMMAND.COM in Microsoft DOS and Windows. It was written by Rex C. Conn and Tom Rawson and first released in 1989. Compared to the default, ...
, FreeDOS),
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
(e.g. 4NT,
Windows PowerShell PowerShell is a task automation and configuration management program from Microsoft, consisting of a command-line shell and the associated scripting language. Initially a Windows component only, known as Windows PowerShell, it was made open-sourc ...
), and
ReactOS ReactOS is a free and open-source operating system for amd64/i686 personal computers intended to be binary-compatible with computer programs and device drivers made for Windows Server 2003 and later versions of Windows. ReactOS has been noted a ...
. The Linux tee command was written by Mike Parker,
Richard Stallman Richard Matthew Stallman (; born March 16, 1953), also known by his initials, rms, is an American free software movement activist and programmer. He campaigns for software to be distributed in such a manner that its users have the freedom to ...
, and David MacKenzie. The command is available as a separate package for
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
as part of the UnxUtils collection of
native Native may refer to: People * Jus soli, citizenship by right of birth * Indigenous peoples, peoples with a set of specific rights based on their historical ties to a particular territory ** Native Americans (disambiguation) In arts and entert ...
Win32 ports of common GNU Unix-like utilities. The FreeDOS version was developed by Jim Hall and is licensed under the
GPL The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general us ...
. The command has also been ported to the
IBM i IBM i (the ''i'' standing for ''integrated'') is an operating system developed by IBM for IBM Power Systems. It was originally released in 1988 as OS/400, as the sole operating system of the IBM AS/400 line of systems. It was renamed to i5/OS in ...
operating system. Additionally the sponge command offers similar capabilities.


Unix and Unix-like

tee -a -i File ... Arguments: *File ... A list of files, each of which receives the output. Flags: *-a Appends the output to each file, rather than overwriting it. *-i Ignores interrupts. The command returns the following exit values ( exit status): *0 The standard input was successfully copied to all output files. *>0 An error occurred. Using ''
process substitution In computing, process substitution is a form of inter-process communication that allows the input or output of a command to appear as a file. The command is substituted in-line, where a file name would normally occur, by the command shell. This all ...
'' lets more than one process read the ''standard output'' of the originating process. Read this example fro
GNU Coreutils, tee invocation
Note: If a write to any successfully opened File operand is not successful, writes to other successfully opened File operands and standard output will continue, but the exit value will be >0.


4DOS and 4NT

TEE Afile... Arguments: *file One or more files that will receive the "tee'd" output. Flags: */A Append the pipeline content to the output file(s) rather than overwriting them. Note: When ''tee'' is used with a pipe, the output of the previous command is written to a
temporary file A temporary file is a file created to store information temporarily, either for a program's intermediate use or for transfer to a permanent file when complete. It may be created by computer programs for a variety of purposes, such as when a program ...
. When that command finishes, ''tee'' reads the temporary file, displays the output, and writes it to the file(s) given as command-line argument.


Windows PowerShell

tee FilePath InputObject tee -Variable InputObject Arguments: *-InputObject Specifies the object input to the cmdlet. The parameter accepts variables that contain the objects and commands or expression that return the objects. *-FilePath Specifies the file where the cmdlet stores the object. The parameter accepts wildcard characters that resolve to a single file. *-Variable A reference to the input objects will be assigned to the specified variable. Note: ''tee'' is implemented as a ReadOnly command alias. The internal cmdlet name is Microsoft.PowerShell.Utility\Tee-Object.


Examples


Unix and Unix-like

* To view and save the output from a command (
lint Lint may refer to: * Fibrous coat of thick hairs covering the seeds of the cotton plant * Lint (material), an accumulation of fluffy fibers that collect on fabric Places * Lint, Belgium, a municipality located in Antwerp, Belgium * Linț, a vill ...
) at the same time: lint program.c , tee program.lint This displays the standard output of the command lint program.c at the computer, and at the same time saves a copy of it in the file program.lint. If a file named program.lint already exists, it is deleted and replaced. Similarly, both the stdout and stderr output streams can be redirected to standard output and the program.lint using stream redirection: lint program.c 2>&1 , tee program.lint * To view and append the output from a command to an existing file: lint program.c , tee -a program.lint This displays the standard output of the lint program.c command at the computer and at the same time appends a copy of it to the end of the program.lint file. If the program.lint file does not exist, it is created. * To allow escalation of permissions: cat ~/.ssh/id_rsa.pub , ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null" This example shows ''tee'' being used to bypass an inherent limitation in the
sudo sudo ( or ) is a program for Unix-like computer operating systems that enables users to run programs with the security privileges of another user, by default the superuser. It originally stood for "superuser do", as that was all it did, and it i ...
command. ''sudo'' is unable to pipe the standard output to a file. By dumping its stdout stream into /dev/null, we also suppress the mirrored output in the console. The command above gives the current user root access to a server over ssh, by installing the user's public key to the server's key authorization list. In
Bash Bash or BASH may refer to: Arts and entertainment * ''Bash!'' (Rockapella album), 1992 * ''Bash!'' (Dave Bailey album), 1961 * '' Bash: Latter-Day Plays'', a dramatic triptych * ''BASH!'' (role-playing game), a 2005 superhero game * "Bash" ('' ...
, the output can be filtered before being written to the file—without affecting the output displayed—by using
process substitution In computing, process substitution is a form of inter-process communication that allows the input or output of a command to appear as a file. The command is substituted in-line, where a file name would normally occur, by the command shell. This all ...
. For example, ls --color=always , tee >(sed "s/\x1b mm//g" > ls.txt) removes common ANSI escape codes before writing to ls.txt, but retains them for display.


4DOS and 4NT

This example searches the file wikipedia.txt for any lines containing the string "
4DOS 4DOS is a command-line interpreter by JP Software, designed to replace the default command interpreter COMMAND.COM in Microsoft DOS and Windows. It was written by Rex C. Conn and Tom Rawson and first released in 1989. Compared to the default, ...
", makes a copy of the matching lines in 4DOS.txt, sorts the lines, and writes them to the output file 4DOSsorted.txt: >find "4DOS" wikipedia.txt , tee 4DOS.txt , sort > 4DOSsorted.txt


Windows PowerShell

* To view and save the output from a command at the same time: ipconfig , tee OutputFile.txt This displays the standard output of the command
ipconfig ipconfig (standing for "Internet Protocol configuration") is a console application program of some computer operating systems that displays all current TCP/IP network configuration values and refreshes Dynamic Host Configuration Protocol (DHCP) an ...
at the
console window A terminal emulator, or terminal application, is a computer program that emulates a video terminal within some other display architecture. Though typically synonymous with a shell or text terminal, the term ''terminal'' covers all remote termin ...
, and simultaneously saves a copy of it in the file OutputFile.txt. * To display and save all running processes, filtered so that only programs starting with svc and owning more than 1000
handles A handle is a part of, or attachment to, an object that allows it to be grasped and manipulated by hand. The design of each type of handle involves substantial ergonomic issues, even where these are dealt with intuitively or by following tra ...
are output: Get-Process , Where-Object , Tee-Object ABC.txt , Where-Object This example shows that the piped input for ''tee'' can be filtered and that ''tee'' is used to display that output, which is filtered again so that only processes owning more than 1000 handles are displayed, and writes the unfiltered output to the file ABC.txt. * Windows Powershell is not suitable for binary and raw data and will always treat the stream as text and will modify the data as it is transferred.


See also

* GNU Core Utilities * Pipeline (Unix) * List of Unix commands * Logger


References


Further reading

*


External links

*An introduction on Linux I/O Redirectio
"Linux I/O Redirection"
with tee

* * *
Delphi-Tee
- Delphi (software)
OpenSource Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized so ...
implementation {{Use dmy dates, date=March 2018 Unix text processing utilities Unix SUS2008 utilities Plan 9 commands Inferno (operating system) commands ReactOS commands IBM i Qshell commands Windows administration Inter-process communication