2013-03-11 46 views
0

我试图写一个小剧本打印什么终端所说的脚本正在运行。搜索关键字osascript输出

osascript -e 'POSIX path of (path to frontmost application)' 

到目前为止,这将打印出类似这样

/Applications/Utilities/Terminal.app/ 

我想做一些事情,比如搜索字符串中的关键词列表,例如“Terminal.app”,“iTerm.app”等。 或者执行诸如排除“/”,“应用程序”和“实用程序”之类的内容以将其过滤掉。

搜索字符串的所有方法我发现似乎需要它在一个变量,我不知道如何将其管道变量。

+0

是的,解答有关问题的变量 - 'VAR = $(osa ....)' – 2013-03-11 21:22:44

回答

1

既然你正在处理的文件路径,还不如用一个文件工具 - basename

osascript -e 'POSIX path of (path to frontmost application)' | xargs basename 
+0

也是可能的。嵌入到'$()'中的优点是你可以为'basename'指定第二个参数。在我对@ niculare的回答的评论中,我的意思是'.app /',但不知何故,它们吃了'.app'部分。 xargs肯定可行,但是以牺牲美感为代价;-) – 2013-03-11 21:34:04

+0

谢谢,完美无缺。 谢谢@Michael Krelin - 黑客,你的方法也很棒。 – Am4d 2013-03-11 21:58:00

1

试试这个:

osascript -e 'POSIX path of (path to frontmost application)' | cut -d"/" -f4 
+2

或'basename“$(osascript ......)”/';-) – 2013-03-11 21:21:51

+1

@ MichaelKrelin-hacker比我的解决方案更好更简单;) – niculare 2013-03-11 21:24:16

+0

未能成功任何不完全三层的路径。 – Madbreaks 2013-03-11 21:28:00