2010-07-26 101 views
0

我認爲隊友幾乎和'打開-a TextMate.app'一樣,但我想我錯了。'open -a TextMate.app'和'mate'有什麼區別?

正如當我運行下面的命令,當沒有hello2.txt時,我得到這個錯誤。

 
open -a TextMate.app hello2.txt 
The file /Users/smcho/hello2.txt does not exist. 

但是,可以跑隊友。

 
mate hello.txt --> opens the text mate. 

這兩者有什麼區別?

我甚至嘗試

 
open -a TextMate.app --args hello2.txt 

但是這一次,TextMate的文件名爲 '無題',而不是 'hello2.txt' 運行。

而這段代碼打開'hello3.txt'沒有任何問題。

 
[NSTask launchedTaskWithLaunchPath:@"/Applications/TextMate.app/Contents/MacOS/TextMate"  arguments:[NSArray arrayWithObjects:@"hello3.txt", nil]]; 
+1

'mate'是一個與TextMate捆綁在一起的特殊可執行文件。 'open'是Mac OS附帶的通用可執行文件。他們完全不同。運行「男友」和「男士開放」來查看他們的差異。 – zneak 2010-07-26 04:09:30

+0

此外,你的問題更適合superuser.com。 – zneak 2010-07-26 04:11:57

+0

@zneak:當我添加到問題中時,當我嘗試在TextMate.app包中運行二進制文件時,在打開「不存在的文件」時沒有問題。所以,我猜夥伴是捆綁中的二進制。但是,即使我的猜測是正確的,但我不明白爲什麼--args不適用於TextMate.app。 – prosseek 2010-07-26 04:16:44

回答

1

open將使用默認或特定應用程序打開給定文件。

open -a TextMate.app hello2.txt 

表示「使用應用程序TextMate.app打開文件hello2.txt」。
如果沒有hello2.txt,沒有什麼open可以打開,有或沒有TextMate.app,因此是錯誤。

open -a TextMate.app --args hello2.txt 

意思是「特定開放沒有在應用TextMate.app(即只有打開TextMate.app),並通過‘hello2.txt’作爲額外的參數」。這是與第一個例子不同的一種說法。 TextMate.app可以決定如何處理這個額外的參數。顯然它選擇忽略它。

mate是一個可選的由TextMate安裝的實用程序。

mate hello.txt 

的意思是「我想編輯一個名爲hello.txt在TextMate的文件」,而這正是TextMate中會讓你做。這是一個不同的實用程序,具有不同的行爲和不同的目的,並且它似乎更適合您希望它做的事情。

+0

感謝澄清,但我仍然不明白爲什麼'launtedTaskWithLaunchPath'的作品。它表明TextMate關心參數(參數:[NSArray arrayWithObjects:@「hello3.txt」)。 – prosseek 2010-07-26 05:02:55

相關問題