ps ax | 在terminal没有包装的grep java?

有没有办法执行ps ax | grep java 没有它包装在terminal上的ps ax | grep java

对我来说, ps不会包装,除非我这样做:

 ps axw 

但是,您可以像这样设置屏幕宽度截断输出(但不会覆盖-w ):

 ps ax --width=80 

您也可以使用o (或-o--format )选项仅包含您感兴趣的列,更改或消除列标题并分别设置每列的宽度*。 查看man ps并search“用户定义的格式”(多次出现)。

*设置一个比正常小的列宽可能会改变内容的显示方式或者可能没有影响。 例如,“args:20”不会截断输出(除非不是最后一列),而“user:5”会导致用户名超过五个字符显示为UID号码。

我无法对丹尼斯·威廉姆森的回答发表评论(也许我没有太多的意见)。 这就是为什么我正在写一个新的答案。

你可以做

 ps ax --width=$COLUMNS 

根据当前terminal的大小调整输出宽度。 如果你最喜欢的shell不支持COLUMNS环境variables,你可以使用stty:

 ps ax --width=$(stty -a | grep 'columns [0-9]*;' | sed 's|.*columns \([0-9]*\).*|\1|') 

或者更具体地说(使用单个awk,但在stty -a输出格式上做出更强的假设):

 ps -axw --width=$(stty -a | awk '/columns/ { printf "%d", $7 }') 

所有这些都是相当多的打字,所以你可能要考虑使上面的别名或shellfunction… :-)上面可能需要调整您的操作系统(我现在不能testing,我不是使用OS X但Linux)。 我有以下输出为stty -a:

 speed 38400 baud; rows 42; columns 178; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; ...