输出到文件时如何设置输出缓冲区width/columns?

How to set output buffer width/columns when outputting to file?

我想执行 yum list installed > file.txt 并将结果输出到一个没有被 X 字符包裹的 txt 文件。至少,我希望能够控制这个输出缓冲区的"width"。

我知道 stty columns 250 会将我的控制台的列宽 window 设置为 250 个字符,但是当我将输出重定向到文件时如何实现这一点?

之前肯定有人问过这个问题,但我只是找不到答案...

编辑:

这似乎是 yum 的事情,因为 ps aux > ps.txt 工作得很好。使用 yum,文件被限制为只有 80 个字符,所以我添加了 yum 标签。我不知道 yum 如何在屏幕和文件上提供不同的输出,而其他程序工作正常(另请注意,我是 bash 的初学者)。

我想你有两个选择。

  1. 编辑 yum 源 (http://yum.baseurl.org/download/3.4/yum-3.4.3.tar.gz)。 80 在第 53 行 output.py 中进行了硬编码。

  2. 让 yum 相信它正在写入终端可能是可行的。是否——如果,如何——是否可以为我不确定的那个假终端设置列数。弹出的一件事是 Linux' unbuffer(参见 Piping data to Linux program which expects a TTY (terminal))。也许一些自己编写的类似 unbuffer 的 C 包装器可能会使用 pty 并对其进行更多控制;甚至 bash 也可能有一个深奥的功能。

我偶然发现了一种使用 screen:

的骇人听闻的方法
screen -L yum --color=never list installed

这将导致一个名为 screenlog.0 的文件包含输出,并且 yum 会认为它正在输出到与当前屏幕宽度相同的 TTY。