我想执行yum list installed > file.txt
并将结果输出到一个没有被 X 字符包装的 txt 文件中。至少,我希望能够控制此输出缓冲区的"宽度"。
我知道stty columns 250
会将控制台窗口的列宽设置为 250 个字符,但是当我将输出重定向到文件时如何完成此操作?
这当然以前有人问过,但我就是找不到答案......
编辑:
这似乎是一件yum
的事情,因为ps aux > ps.txt
工作得很好。使用 yum,文件限制为仅 80 个字符,所以我正在添加 yum 标签。我不知道 yum 如何在屏幕上和文件上给出不同的输出,而其他程序工作正常(另请注意,我是 bash 的初学者)。
我认为您有两种选择。
-
编辑 yum 源 (http://yum.baseurl.org/download/3.4/yum-3.4.3.tar.gz)。80 以 output.py 第 53 行硬编码。
-
让 yum 相信它正在写入终端可能是可行的。是否 - 如果,如何 - 是否可以为那个假终端设置列数,我不确定。弹出的一件事是Linux的
unbuffer
(参见将数据管道到Linux程序,它需要一个TTY(终端))。也许一个自我编写的类似 unbuffer 的 C 包装器可能会使用 pty 并对其进行更多控制;甚至 bash 也可能有一个深奥的功能。
我偶然发现了一种使用 screen
的黑客方法来做到这一点:
screen -L yum --color=never list installed
这将导致一个名为 screenlog.0
的文件包含输出,并且 yum 会认为它正在输出到与当前屏幕宽度相同的 TTY。