输出到文件时如何设置输出缓冲区宽度/列?

时间:2015-04-15 11:31:12

标签: linux bash centos yum

我想执行yum list installed > file.txt并将结果输出到未被X字符包装的txt文件。至少,我希望能够控制此输出缓冲区的“宽度”。

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

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

编辑:

这似乎是一个yum因为ps aux > ps.txt工作得很好。使用yum,文件仅限于80个字符,因此我添加了yum标记。我不知道yum如何在屏幕和文件上提供不同的输出,而其他程序工作得很好(还要注意我是bash的初学者)。

2 个答案:

答案 0 :(得分:3)

我认为你有两种选择。

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

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

答案 1 :(得分:0)

我偶然发现了使用screen执行此操作的hackish方式:

screen -L yum --color=never list installed

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