强制换行终端中较长的输出行

强制换行终端中较长的输出行

通常,当在终端/控制台/xterm 中输出较长的行时,它们会自动换行。但是,有些情况不会。ps就是这样一种情况——它会在窗口宽度处截断输出。

 ps ax | grep [d]nsmasq
 4459 ?        S      0:03 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsm

对于dnsmasq,即使我最大化我的 xterm,输出仍然被切断。

我试过了,

 $ ps ax | fold | grep [d]nsmasq
 4459 ?        S      0:03 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsm

 $ ps ax | grep [d]nsmasq | fold
 4459 ?        S      0:03 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsm

 $ ps ax | grep [d]nsmasq | fold --spaces
 4459 ?        S      0:03 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsm

这样的切割ps看起来好像没有写入标准输出,但它对 的响应grep证明并非如此。但是为什么fold不起作用呢?

如何换行这么长的线来显示所有内容而不是切割到窗口的宽度?

答案1

我记得的快速解决方法是:$ ps -ef | cat

这样, ps 就会将管道视为进行输出的环境,并且不会截断行。

答案2

嗯,问完之后很快就找到了答案。

COLUMNS=500 ps ax | grep [d]nsmasq | fold

dpkg同样的技巧也适用。

答案3

检查手册页。比较以下 3 个输出:

ps ax
ps axw
ps axww

答案4

ps检查其输出是否到达终端,如果是,则查询终端的宽度。然后ps根据该宽度截断每一行。不是终端截断它们,它甚至没有收到这些数据。

相关内容