如何让printf写一个新文件,附加一个现有文件,并写入stdout?

时间:2017-05-22 23:15:20

标签: linux bash file-io io stdout

我有一个printf命令会写一个文件,但不会打印到stdout。我希望两者都能让用户看到发生的事情,同时将记录写入日志文件。

printf "%s\n" "This is some text" "That will be written to a file" "There will be several lines" | tee -a bin/logfile.log > bin/newfile.conf

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

OS:Centos 7

1 个答案:

答案 0 :(得分:4)

这是因为除了您使用> bin/newfile.conf所做的事情之外,您还会使用tee重定向屏幕输出。只需删除>及其后的所有内容即可。如果除了屏幕之外还要一次输出这两个文件,可以使用tee两次,例如:

printf ... | tee -a bin/logfile.log | tee bin/newfile.conf

它附加到 logfile.log 并覆盖 newfile.conf ,并写入屏幕。根据需要使用或省略-a选项。

作为John1024 points out,您也可以使用tee一次,因为它接受多个文件名,但在这种情况下-a applies to all filenames,但它对您来说很有用希望所有文件的追加与覆盖行为相同。