Linux 如何让printf写入新文件、附加现有文件并写入stdout?

Linux 如何让printf写入新文件、附加现有文件并写入stdout?,linux,bash,file-io,io,stdout,Linux,Bash,File Io,Io,Stdout,我有一个printf命令,它将写入一个文件,但不会打印到标准输出。我希望两者都有,这样我可以让用户看到发生了什么,同时,将记录写入日志文件 printf“%s\n”这是一些文本“”,将写入文件“”将有几行“| tee-a bin/logfile.log>bin/newfile.conf 该命令附加到日志文件并写入新文件,但不向屏幕写入输出:( OS:Centos 7这是因为除了使用tee执行的操作外,您还使用bin/newfile.conf;printf…| tee-a bin/logfile.

我有一个
printf
命令,它将写入一个文件,但不会打印到标准输出。我希望两者都有,这样我可以让用户看到发生了什么,同时,将记录写入日志文件

printf“%s\n”这是一些文本“”,将写入文件“”将有几行“| tee-a bin/logfile.log>bin/newfile.conf

该命令附加到日志文件并写入新文件,但不向屏幕写入输出:(


OS:Centos 7

这是因为除了使用
tee
执行的操作外,您还使用
重定向屏幕输出。只需删除
及其后的所有内容。如果您想在屏幕之外同时输出到这两个文件,您可以使用
tee
两次,例如:

printf ... | tee -a bin/logfile.log | tee bin/newfile.conf
这将附加到logfile.log并覆盖newfile.conf,还将写入屏幕。根据需要使用或省略
-a
选项


您也可以使用
tee
一次,因为它接受多个文件名,虽然在这种情况下
-a
,但在您希望所有文件的附加与覆盖行为相同的情况下,它会很有用。

我实际上需要转到两个文件,一个作为新文件(conf文件),另一个作为附加文件(日志文件),我可以
tee
两次吗?@bc81是的,你可以
tee
两次,并对你想要附加的部分使用
-a
。我修复了这个例子。
tee
就像“管道”中的“水龙头”,实际上,您可以在管道命令链的任何位置多次使用它,以便在该点将流转储到文件中。谢谢,非常有用!您还可以截断目标文件,以便在附加到它之前保证它为空。
:>bin/newfile.conf;printf…| tee-a bin/logfile.log bin/newfile.conf
.稍多键入,但进程较少。