2013-03-11 85 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