当我做
ps aux
输出被很好地修剪到适合我的终端的宽度,因此较长的流程描述不会占用超过一行。但是,如果我将其传输到其他任何地方,长行又会恢复。
我意识到这是一种正确的行为,因为 ps 不再输出到 tty,而整个输出对于处理来说可能至关重要。我想要的是其他当我完成时,它将裁剪输出。
我希望能够做这样的事情:
ps aux | grep -v 'www-data' | nowrap
nowrap
是我正在寻找的虚构工具。它将确保长行被裁剪并且不会溢出。
有这样的事吗?
答案1
您可以使用cut
命令来对输出进行切片。例如:
ps aux | grep -v 'www-data' | cut -c-80
这将仅保留每行的前 80 个字符。当然,您可以将其设置为您想要的任何宽度。
如果使用 bash 命令行,您可以执行以下操作:
ps aux | grep -v 'www-data' | cut -c-$COLUMNS
如果输出有制表符,则宽度可能无法正确计算。expand
可以将制表符转换为空格:
ps aux | grep -v 'www-data' | expand | cut -c-$COLUMNS
答案2
cut
您可以使用. 例如裁剪输出
ps aux | grep -v'www-data'| cut -c1-${COLUMNS}
其中${COLUMNS}
提供终端的当前宽度。该resize
命令可用于重新生成当前宽度:
$ resize
COLUMNS=80;
LINES=24;
export COLUMNS LINES;
如果您想自动化此操作,可以将其包装在脚本中nowrap
:
#!/bin/bash
eval "export $(resize | grep 'COLUMNS=')"
cut -c1-${COLUMNS} -
答案3
除了 nagul 所说的之外,您还可以在 bash 中使用:
输入列
获取宽度:
COLUMNS=$(输入列)