Bash命令打印当前正在运行的所有应用程序

时间:2016-03-04 00:38:19

标签: macos bash applescript

只打印正在运行的应用程序(即只显示在扩展坞上的应用程序)的命令是什么。例如:

Chrome
Microsoft Word
Microsoft Outlook
Etc. 

Microsoft Helper App
Other helper apps not shown on the dock

是否有要添加到ps命令的标记,或者是否有完全不同的命令来执行此操作?

2 个答案:

答案 0 :(得分:4)

更新:使用AppleScript 显示简单,强大的解决方案:

作为单行

osascript -e 'set text item delimiters to "\n"' -e 'tell application "System Events" to (name of every application process whose background only is false) as string' | sort

更易阅读的版本:

osascript -e 'set text item delimiters to "\n"' \
  -e 'tell application "System Events" to ¬
  (name of every application process whose background only is false) as string' | sort
  • set text item delimiters to "\n"告诉AppleScript在将列表转换为字符串时将列表项与\n(换行符)分开。

  • tell application "System Events" to ...命令的核心name of every application process whose background only is false返回应用程序而非的应用程序进程列表,旨在在后台运行。

    < / LI>

原创,脆弱的回答:

除非您使用命令行实用程序深入挖掘各个正在运行的应用程序以确定它们是否具有UI,否则您需要求助于启发式,例如排除与某些单词的匹配文件名(helper,...) - 永远不会完全健壮。

这是另一个尝试,以补充alvits' helpful answer

pgrep -fl '.*/Applications/.*\.app/Contents/' | 
  sed -E 's:^[0-9]+ .*/([^/]+)\.app[[:>:]].*$:\1:' | 
   grep -Evi 'helper|daemon|service|handler|settings' |
     sort -u

答案 1 :(得分:1)

这是你可以尝试的。

echo json_encode($scores);

这将显示您发布的流程。

内部ps -c -o comm -p $(pgrep -u $USER -d, -f /Applications) | grep -Ev 'Helper|handler' 将打印由逗号分隔的用户$(pgrep -u $USER -d, -f /Application)拥有的进程的PID

外部$USER将打印ps中由进程ID列表标识的进程。

-p ...告诉-o comm仅打印进程名称。

ps告诉-c排除进程的路径名。

或者

ps

这将显示进程的完整路径。