Unix:混淆使用Tee

手册中说明三通是一种“管件”工具。 这些案例[1]让我感到困惑:

1.情况

echo "foo bar" | sudo tee -a /path/to/some/file

2.案例

:w !sudo tee %

很难从案例中理解发球的逻辑。 发球台如何工作?


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

tee [OPTION]... [FILE]...

例如

tee [ -a ] [ -i ]... [ File ]...
  • -a将输出追加到文件的末尾,而不是覆盖它。

  • -i忽略中断。

  • 在这里输入图像描述

    使用sudo并在问题中以您的示例附加到文件

    ls -l | sudo tee -a file.txt 
    

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

    echo "foo bar" | sudo tee -a /path/to/some/file
    

    “foo bar”将被回显到标准输出并附加到/path/to/some/file 。 把T形管想象成管子中的“T”接头,将输出分成两个其他管。


    tee stdin复制到stdout (如cat ),并将所有内容写入指定的文件。 通过sudo以这种方式使用它,可以将信息推送到特权模式,并且同时监视是否有正确的信息到达那里。

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

    sudo echo "foo bar" > /path/to/some/file
    

    将不起作用,因为重定向将由主叫用户完成,而不是由sudo目标用户完成。

    链接地址: http://www.djcxy.com/p/49577.html

    上一篇: Unix: confusing use of the Tee

    下一篇: How can I save a file I opened in vim as the wrong user?