0

我有函数“备份”,控制台的这个函数的输出也被重定向到一个文件,它的完成如下:

backup > >(tee -a ./log.txt) 2>&1

它可以工作,但是我想将新的输出数据添加到文件的开头,并且对于我的情况来说,明智地使用ed(not sed),并且我按照以下方式进行操作:

ed -s log.txt < <(printf '%s\n' 1i "$(backup)" . wq)

在这种情况下,我不知道如何同时实现控制台和文件的输出(就像我的第一种情况一样)。有人可以给我一个实施的提示吗?

4

1 回答 1

0

如果我正确理解您的代码 - 您正在尝试将备份命令的输出预先附加到 log.txt 文件的开头。此外,您正试图在控制台上查看备份输出。

尝试这个:

{
  backup 2>&1 | tee /dev/tty
  cat log.txt
} > log.txt.new
mv log.txt.new log.txt 

编辑:

这是遵循 Charles Duffy 建议的代码版本:

cat <( backup 2>&1 | tee /dev/tty ) log.txt > log.txt.new && mv log.txt.new log.txt
于 2020-03-12T20:59:10.860 回答