在Linux上使用Bash(Ubuntu 12.04 LTS)时,文本输出有时会被截断。我会解释我的意思。
假设您发出“dpkg -l”命令。然后dpkg向其标准输出写入一长串已安装的包,文本行不会被截断,一切正常。现在,您尝试将命令的输出转储到文件 - “dpkg -l> dump”。查看文件内容时,您会看到某些行(那些很长的行)已被截断。什么逻辑导致这种行为?
另外,我进行了一个小实验。以交互方式使用Python解释器时,我输入以下内容:
from os import popen2
child_input, child_output = popen2("dpkg -l", "t") # running the command "dpkg -l" in a subprocess so that I can then obtain what it writes to its stdout via a pipe
dump_file = open("dump", 'w') # create a file to write to
for string in child_output:
dump_file.write(string) # writing the child's output to the dump file, one line at a time
dump_file.close()
以交互方式键入时,代码工作正常 - 不会发生截断。一旦我将该代码放在脚本中并运行它,一些长行就会被截断。为什么会这样?
答案 0 :(得分:0)
您可以在执行bash;
中的命令之前尝试使用COLUMNS变量感受到不同之处:
COLUMNS = 80 dpkg -l 和 COLUMNS = 300 dpkg -l </ p>