在不使用Tee的情况下在Shell脚本中保存所有终端显示

时间:2018-08-11 16:29:24

标签: bash shell terminal

我在上一个问题中看到,放置exec > >(tee -ai file)会捕获脚本中显示的所有内容,同时仍然显示它。这样做是可行的,但是能够“快照”终端中显示的内容而不一直记录它会更好

1 个答案:

答案 0 :(得分:3)

您可以在这里做三件事:

  1. 您可以简单地将输出设置为以下文件:

    bash printer.sh > saving_file

注意:如果您在上一个会话中已有一个名为save_file的文件,请使用>> (将新的输出追加到现有文件中而不覆盖现有数据)而不是> (将覆盖先前存储的所有内容都将丢失)

  1. 您可以使用nohup:

    nohup bash printer.sh

这两个命令都将保存脚本输出的所有内容。

  1. 您可以做的第三件事就是只需使用script命令,只需执行以下操作即可:

    script saving_file

因此,执行脚本命令后在终端中执行的任何操作都将保存到名为save_file的文件中。如果您想停止从终端发送所有内容,只需执行exit,您将可以正常使用终端。

您还可以使用nohup并从shell脚本中写入文件,如果您要求的不是其他内容,那么我建议您使用类似以下代码的内容。

var=$(echo 'hello world')
echo $var > saving_file # this will write 'hello world' to a file named saving _file

echo $var # this will display hello world