tee - macOS
Overview
tee is a command-line utility in macOS that reads input from standard input and writes it to both standard output and one or more specified files. It is commonly used for logging input, duplicating output to multiple destinations, and processing data simultaneously.
Syntax
tee [options] [--] [file ...]
Options/Flags
- -a, –append: Append to the specified files instead of overwriting them.
- -i, –ignore-interrupts: Ignore interrupt signals (e.g., Ctrl-C) while writing to files.
- -l, –line-buffered: Line buffer output, ensuring each line is written as it is encountered.
- -u, –unordered: Unordered mode, where the order of output is not guaranteed. This can improve performance when writing to multiple files.
Examples
Simple Usage:
command | tee output.log
This sends the output of command to both standard output and output.log.
Appending to Files:
command | tee -a log1.txt log2.txt
This appends the output of command to log1.txt and log2.txt.
Line Buffering:
command | tee -l output.txt
This ensures that each line of output is written to output.txt as it is encountered.
Common Issues
- Permission Denied Errors: Ensure you have appropriate permissions to write to the specified files.
- Overwritten Files: Use the
-aoption to append to files instead of overwriting them. - Output Order Issues: In ordered mode (default), output can be interleaved between different destinations. Use the
-uoption for unordered mode.
Integration
tee can be integrated with other commands for advanced tasks:
- Combine with
cat:cat file1 file2 | tee merged.txtmerges multiple files intomerged.txt. - Use with
grep:command | tee log.txt | grep errorfilters the output and logs only error messages. - Create Pipes:
command | tee >(tee log1.txt >&2)creates a named pipe to simultaneously write output tolog1.txtand standard error.