Unix:混乱使用Tee -command

Léo*_* 준영 14 unix tee

手动说明发球台是"管道配件" - 工具.案件[1]让我困惑:

案件

echo "foo bar" | sudo tee -a /path/to/some/file
Run Code Online (Sandbox Code Playgroud)

2.案件

:w !sudo tee %
Run Code Online (Sandbox Code Playgroud)

从案例中很难理解发球台的逻辑.发球怎么样?

Ric*_*and 36

tee用于拆分命令管道,允许您将命令的输出保存到文件沿管道发送.在第一个例子中你给了::

echo "foo bar" | sudo tee -a /path/to/some/file
Run Code Online (Sandbox Code Playgroud)

"富栏"将被回波到标准输出附加到/path/to/some/file.可以将管道中的"T"形接头视为T形接头,将输出分成另外两个管道.

  • 这就是名字的来源:-) (5认同)

Dav*_*itt 12

tee复制stdinstdout(像cat)并另外将所有内容写入指定的文件.通过这种方式使用它sudo可以将信息推送到特权模式,同时监控正确的东西是否存在.

还要注意,由于在shell中处理重定向的方式几乎相当

sudo echo "foo bar" > /path/to/some/file
Run Code Online (Sandbox Code Playgroud)

将无法工作,因为重定向将由调用用户完成,而不是由sudo目标用户完成.


Gir*_*ore 12

tee通常用于分割程序的输出,以便它可以显示并保存在文件中.该命令可用于在数据被另一个命令或程序更改之前捕获中间输出.tee命令读取标准输入,然后将其内容写入标准输出.它同时将结果复制到指定的文件或变量中

tee [OPTION]... [FILE]...
Run Code Online (Sandbox Code Playgroud)

例如

tee [ -a ] [ -i ]... [ File ]...
Run Code Online (Sandbox Code Playgroud)
  • -a 将输出追加到File的末尾而不是写入.

  • -i 忽略中断.

在此输入图像描述

使用sudo问题中的示例并将其附加到文件中

ls -l | sudo tee -a file.txt 
Run Code Online (Sandbox Code Playgroud)