“不合规 - PermitRootLogin”打印到 output.log 和 test1.txt 中。我不是想要回显到终端。我该怎么做?
echo "NON-Compliance - PermitRootLogin" | tee output.log test1.txt
终端:不合规 - PermitRootLogin
答案1
在原标题中你写了“silence echo”,你还用了标签回声,但您在终端中看到的内容并非直接来自echo
您调用的内容。您的命令如下所示:
echo … | tee …
通常echo
打印到其标准输出。echo
不会打印到其他任何地方。echo
除非终端是其标准输出,否则不会打印到终端。在您的命令中echo
打印到管道并tee
从管道读取。这echo
不会打印到终端。
通常tee
打印到作为操作数传递的文件和到其标准输出。在您的情况下,其标准输出是终端,这(不是echo
)就是您想要静音的内容。您有两个选择:
将 stdout 重定向
tee
到其中一个文件,而不是将文件指定为操作数:… | tee output.log >test1.txt
或者将 stdout 重定向
tee
到/dev/null
(这是一个丢弃写入其中的所有内容的文件):… | tee output.log test1.txt >/dev/null
(将 stdout 和/或 stderr 重定向
/dev/null
到一般的使命令静默的方法。
两者之间有细微的差别。在第一种情况下,shell在启动test1.txt
之前会创建(如果需要)、截断和打开。在第二种情况下,shell 会执行所有这些操作。tee
tee
在某些情况下,差异很重要。想象一下,您需要sudo tee …
因为test1.txt
无法由运行 shell 的普通用户访问。在这种情况下>test1.txt
不起作用。事实上sudo tee some_file >/dev/null
是some_file
需要 root 权限才能写入的有用技巧。