man tee:

 NAME
tee - read from standard input and write to standard output and files SYNOPSIS
tee [OPTION]... [FILE]... DESCRIPTION
Copy standard input to each FILE, and also to standard output. -a, --append
append to the given FILEs, do not overwrite -i, --ignore-interrupts
ignore interrupt signals --help display this help and exit --version
output version information and exit If a FILE is -, copy again to standard output.

用途说明

在执行Linux命令时,我们可以把输出重定向到文件中,比如 ls >a.txt,这时我们就不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令了。tee命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中(read from standard input and write to standard output and files. Copy standard input to each FILE, and also to standard output. If a FILE is -, copy again to standard output.)。在info tee中说道:tee命令可以重定向标准输出到多个文件(`tee': Redirect output to multiple files. The `tee' command copies standard input to standard output and also to any files given as arguments.  This is useful when you want not only to send some data down a pipe, but also to save a copy.)。要注意的是:在使用管道线时,前一个命令的标准错误输出不会被tee读取。

常用参数

格式:tee

只输出到标准输出,因为没有指定文件嘛。

格式:tee file

输出到标准输出的同时,保存到文件file中。如果文件不存在,则创建;如果已经存在,则覆盖之。(If a file being written to does not already exist, it is created. If a file being written to already exists, the data it previously
contained is overwritten unless the `-a' option is used.)

格式:tee -a file

输出到标准输出的同时,追加到文件file中。如果文件不存在,则创建;如果已经存在,就在末尾追加内容,而不是覆盖。

格式:tee -

输出到标准输出两次。(A FILE of `-' causes `tee' to send another copy of input to standard output, but this is typically not that useful as the copies are interleaved.)

格式:tee file1 file2 -

输出到标准输出两次,同时保存到file1和file2中。

使用示例

示例一 tee命令与重定向的对比

[root@web ~]# seq 5 >1.txt 
[root@web ~]# cat 1.txt 
1
2
3
4
5
[root@web ~]# cat 1.txt >2.txt 
[root@web ~]# cat 1.txt | tee 3.txt 
1
2
3
4
5
[root@web ~]# cat 2.txt 
1
2
3
4
5
[root@web ~]# cat 3.txt 
1
2
3
4
5
[root@web ~]# cat 1.txt >>2.txt 
[root@web ~]# cat 1.txt | tee -a 3.txt 
1
2
3
4
5
[root@web ~]# cat 2.txt 
1
2
3
4
5
1
2
3
4
5
[root@web ~]# cat 3.txt 
1
2
3
4
5
1
2
3
4
5
[root@web ~]#

示例二 使用tee命令重复输出字符串

[root@web ~]# echo 12345 | tee 
12345

[root@web ~]# echo 12345 | tee - 
12345
12345
[root@web ~]# echo 12345 | tee - - 
12345
12345
12345
[root@web ~]# echo 12345 | tee - - - 
12345
12345
12345
12345
[root@web ~]# echo 12345 | tee - - - - 
12345
12345
12345
12345
12345
[root@web ~]#

[root@web ~]# echo -n 12345 | tee

12345[root@web ~]# echo -n 12345 | tee - 
1234512345[root@web ~]# echo -n 12345 | tee - - 
123451234512345[root@web ~]# echo -n 12345 | tee - - - 
12345123451234512345[root@web ~]# echo -n 12345 | tee - - - - 
1234512345123451234512345[root@web ~]#

示例三 使用tee命令把标准错误输出也保存到文件

[root@web ~]# ls "*" 
ls: *: 没有那个文件或目录
[root@web ~]# ls "*" | tee - 
ls: *: 没有那个文件或目录
[root@web ~]# ls "*" | tee ls.txt 
ls: *: 没有那个文件或目录
[root@web ~]# cat ls.txt 
[root@web ~]# ls "*" 2>&1 | tee ls.txt 
ls: *: 没有那个文件或目录
[root@web ~]# cat ls.txt 
ls: *: 没有那个文件或目录
[root@web ~]#

问题思考

相关资料

【1】Linux公社   linux tee命令详解     
【2】百度知道    linux tee 命令的详细使用, 越详细越好.    
【3】脚本学习    linux tee命令: 将标准输出一分为二     
【4】起航工作室  linux tee 命令详解

【5】5Linux教程   Linux tee command

要复制结果又想看到命令的输出
命令的结果输出时,如果给复制命令(即上面提到的命令 clip、xsel、pbcopy)那么命令输出就看不到了。

如果你想先看到命令的输出,可以下面这么做。

echo 'Hello World!' | tee tmp.file.txt

Hello World!

xsel < tmp.file.txt

rm tmp.file.txt

即先使用 tee 命令把输出输到控制台和一个文件中。
命令执行完成后,再把输出的内容放到剪贴板中。

linux tee 命令详解的更多相关文章

  1. Linux tee命令详解

    Linux tee命令 Linux tee命令用于读取标准输入的数据,并将其内容输出成文件.如果文件指定为"-",则将输入内容复制到标准输出 tee指令会从标准输入设备读取数据,将 ...

  2. [转]linux tee 命令详解

    转自: http://codingstandards.iteye.com/blog/833695 用途说明 在执行Linux命令时,我们可以把输出重定向到文件中,比如 ls >a.txt,这时我 ...

  3. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  4. linux cat 命令详解

    linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...

  5. 【初级】linux rm 命令详解及使用方法实战

    rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...

  6. Linux netstat命令详解

    Linux netstat命令详解 一  简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...

  7. linux grep命令详解

    linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...

  8. Linux chmod命令详解

    Linux chmod命令详解 chmod----改变一个或多个文件的存取模式(mode)   chmod [options] mode files   只能文件属主或特权用户才能使用该功能来改变文件 ...

  9. 【转发】linux yum命令详解

    linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...

随机推荐

  1. Makefile如何通过宏开关进行条件编译

    在开发中经常会遇到需要条件编译一段代码,即: #ifdef DEBUG { 如果定义了DUBUG,则执行此段代码!} #else {否则执行此段代码!} 这就需要通过宏开关来进行条件编译,也就是常说的 ...

  2. CATransform3D 讲解

    最近看到一个3D动画效果,决定认真就研究一下.从网上看到很多介绍,下面详细的讲解一下CATransform3D CATransform3D结构成员的意义. structCATransform3D { ...

  3. 关于MSHTML

    本文翻译自http://msdn.microsoft.com/workshop/browser/mshtml/overview/overview.aspMSDN Home >  MSDN Lib ...

  4. [置顶] Android访问控制系统测试与评估

    5.1实验方案 通过以上章节,本文阐述了目前Android平台上的恶意软件以“隐私窃取”和“恶意扣费”类为主,本研究课题访问控制的目标也正是阻止恶意软件“隐私窃取”和“恶意扣费”的行为,因此,本实验方 ...

  5. java byte 16进制转换

    整型转16进制: int devIdInt = Integer.parseInt(devId);String devIdString = Integer.toHexString(devIdInt); ...

  6. Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别

    在Java中,字符串可以直接赋值或者使用new来新建,直接赋值的话是编译阶段(.class文件)中就将该字符串值放到常量池中,以后如果有其他变量直接赋予同样的值的话就不再分配内存空间,而是直接给它个引 ...

  7. 使用const 提高函数的健壮性

    1.如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地改动该指针指向的内存单元,起到保护的作用. 例如:void StringCopy(char *strDest, const cha ...

  8. Java基础知识强化46:StringBuffer类之判断一个字符串是否对称案例

    1. 分析:判断一个字符串是否是一个对称的字符串,我们只需要把字符串的第1个字符和最后1个字符,第2个字符和倒数第2个字符,…… 比较的次数是长度除以2.  方法1:通过取取索引对应值来进行一一比对 ...

  9. jquery之onchange事件

    $(function(){ $("#opreateHtml").window("close"); $("#deliveryGrid").da ...

  10. Android --------- 压缩图片的尺寸和大小

    压缩图片大小,尺寸不变 将已知路径的图片压缩至不大于目标大小,并保存至指定路径 /** * 质量压缩,通过给定的路径来压缩图片并保存到指定路径 * * @param srcPath * 资源图片的路径 ...