在psgwin for ps命令中只获取一个COMMAND列

时间:2017-02-22 08:46:43

标签: macos cygwin

在Cygwin中,我可以通过以下命令获取正在运行的进程列表:

      PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
    13160       1   13160      13160  ?         197609 13:42:18 /usr/bin/mintty
S   15404    2852   15404      16776  pty2      197609 13:59:29 /usr/bin/vi
     2852   12912    2852      11244  pty2      197609 13:42:54 /usr/bin/bash
     9864       1    9864       9864  ?         197609 13:11:32 /usr/bin/mintty
S   10500    2852    1692       1452  pty2      197609 14:09:42 /usr/bin/less
S   17644    2852   17644      11880  pty2      197609 14:00:15 /usr/bin/vi
    12912       1   12912      12912  ?         197609 13:42:54 /usr/bin/mintty
     8432    2852    8432      12020  pty2      197609 14:10:05 /usr/bin/ps
    17092   13160   17092      14720  pty1      197609 13:42:18 /usr/bin/bash

但是,我只想要COMMAND列,而不是所有列:

COMMAND
/usr/bin/mintty
/usr/bin/vi
/usr/bin/bash
/usr/bin/mintty
/usr/bin/less
/usr/bin/vi
/usr/bin/mintty
 /usr/bin/ps
/usr/bin/bash

在MAC中,我可以通过以下命令执行此操作:

ps -o command

同样的命令在windows中对cygwin不起作用,因为ps中没有-o选项用于cygwin。

1 个答案:

答案 0 :(得分:0)

您可以使用awk仅打印选定的列。

$ ps |awk '{ if (NF==8) {print $8} else {print $9}}'
COMMAND
/usr/bin/ps
/usr/bin/bash
/usr/bin/mintty

更多学习内容: http://www.grymoire.com/Unix/Awk.html#uh-17