将命令输出保存到文件并在终端上查看

时间:2019-06-11 02:34:41

标签: python linux terminal

我有一个缓慢输出列表的命令。我希望将此列表保存在文件中,并希望在终端上慢慢生成它。

python script.py 2>&1 | tee File.txt

这对我不起作用。保存命令后,在终端上看不到网站列表。

2 个答案:

答案 0 :(得分:1)

默认情况下,stdout在进入终端时是行缓冲的,但是在重定向时使用更大的缓冲区,因此tee和终端直到稍后才看到输出。

有关如何使script.py不缓冲输出的方法,请参见此问题的答案Disable output buffering

例如script.py是:

$this->input->post('databse_column_name')=$variable_name_which_content_file_name

运行#!/usr/bin/python3 import time for i in range(5): print('This is line', i, flush=True) time.sleep(1) 会在执行该行时将每一行打印到终端上-每隔一秒。

如果删除./script.py | tee File.txt,则整个输出都将被缓冲,直到打印完所有内容5秒钟后脚本完成为止,什么都不会打印。

flush=True将stderr重定向到stdout,因此您可能需要对stderr和stdout应用相同的缓冲。

答案 1 :(得分:0)

the Linux Documentation Project (TLDP)

  

2>&1        #将stderr重定向到stdout。        #错误消息被发送到与标准输出相同的位置。

然后

  

&>文件名        #将stdout和stderr都重定向到文件“文件名”。

因此,将它们都通过管道传输到文件中,

Command &> | tee File.txt

或者只是stdout

Command | tee File.txt