Bash 在shell脚本中保存所有终端显示,而不使用T形三通

Bash 在shell脚本中保存所有终端显示,而不使用T形三通,bash,shell,terminal,Bash,Shell,Terminal,我在前面的一个问题中看到,放置exec>>(tee-ai文件)将捕获脚本中显示的所有内容,同时仍然显示它。这是可行的,但是,如果能够“抓拍”终端中显示的内容,而不需要一直记录,那么效果会更好。您可以在这里做三件事: 您可以简单地将输出设置为如下文件: bash printer.sh>保存\u文件 注意:如果您在上一个会话中已经有一个名为saving_file的文件,请使用>(将新输出附加到现有文件中,而不覆盖现有数据)而不是(将覆盖以前存储的任何内容将丢失) 您可以使用nohup: nohup

我在前面的一个问题中看到,放置
exec>>(tee-ai文件)
将捕获脚本中显示的所有内容,同时仍然显示它。这是可行的,但是,如果能够“抓拍”终端中显示的内容,而不需要一直记录,那么效果会更好。

您可以在这里做三件事:

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

    bash printer.sh>保存\u文件

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

  • 您可以使用nohup:

    nohup bash printer.sh

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

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

    脚本保存\u文件

  • 因此,无论在脚本命令之后在终端中执行什么操作,都将保存到名为saving_file的文件中。如果您想停止从终端发送所有信息,只需执行退出操作,即可正常使用终端

    您也可以使用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
    

    这并不能真正回答我的问题,我想在我的shell脚本中放入一些东西,将屏幕上显示的所有内容都放入一个文件中,在调用这个“神秘命令”之前不会更改文件的内容again@Geremachek2你是说在shell脚本中某一行之前显示的所有内容?类似的,如果你明白我的意思,把它想象成拍照,而不是录像saying@Geremachek2你能给出一个示例代码,像echo 30之类的抽象代码,然后你想要显示的所有内容,直到保存为止。这将有助于准确地为您提供您想要的内容Techo Hello,World saveterm test.txt echo这将不会被保存cat test.txt Hello,World有专门的终端,如
    tmux
    ,可以准确地做到这一点(拍摄当前屏幕的内容),但您需要实际使用具有该功能的终端。一般来说,终端的任务是跟踪屏幕上每个位置存储的内容——没有其他程序有足够的信息可以告诉,因为在它之前/之后/由它启动的其他东西可以写入TTY本身……也就是说,如果您说要保存所有显示内容,您要包含脚本启动前编写的内容,则除了专用终端支持之外,没有其他内容—不是
    nohup
    ,不是
    script
    ,etc——由任务决定。请记住,TTY接口是在考虑串行接口的情况下构建的——如果你看看20世纪70年代设备(如)的功能,这就是我们今天的接口的核心。将内容写入TTY就是将内容写入TTY;一个查询/回读功能,要求TTY告诉另一端的计算机(传统上,也是一个完全独立的硬件!)当前显示的内容从来都不是标准的。