如何让 printf 写入新文件、追加现有文件并写入标准输出?

bc8*_*c81 4 linux io bash file-io stdout

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

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

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

操作系统:Centos 7

Jas*_*n C 5

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

printf ... | tee -a bin/logfile.log | tee bin/newfile.conf
Run Code Online (Sandbox Code Playgroud)

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

正如John1024 指出的那样,您也可以使用tee一次,因为它接受多个文件名,尽管在这种情况下-a 适用于所有文件名,但在您希望所有文件的追加与覆盖行为相同的情况下,它可能很有用。