通常,当在终端/控制台/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
根据该宽度截断每一行。不是终端截断它们,它甚至没有收到这些数据。