如何在終端裡面用其他程序打開文件?

比如open xxx.avi

會用默認播放器打開,但是我想用其他播放器打開命令該怎麼輸入?

請大神們賜教。。。


直接打程序名/路徑。

比如kate readme.txt


如果是在在OSX操作系統中

-----------------------------------------

== 直接調用程序:

如果你知道一個應用程序的位置,雖然一般情況下都是存放在/Applications目錄下,但是並不完全如此,實際上用戶可以把一個程序放在任何地方,同樣可以運行。但是這種方法我們就假定你知道它存放的位置,比如是/Applications/Safari.app。可以使用下面的命令來啟動該程序:

open -a /Applications/Safari.app

其實,關鍵就是-a參數。

-----------------------------------------

===使用程序包標識串

我們無需知道一個程序的具體位置,在OSX啟動之後,它會遍歷所有的程序,特別是當一個程序運行過一次之後,系統會將該程序進行註冊,而一個程序區別於其他程序的是每個程序有有自己唯一的程序包標識串(英文:Bundle Identifier), 其實不僅程序有,每個組件也都有,但與本題無關就不贅述。有了這個程序包標識串,操作系統幫你找到它。

下面的問題是,如何獲得一個程序的程序包標識串。同樣使用上面的Safari的例子,見下面的命令行例子:

defaults read /Applications/Safari.app/Contents/Info CFBundleIdentifier

如果不太了解,這裡可以多解釋一下:

  • defaults:是OSX自帶的獲得用戶默認配置的命令,通俗說就是讀取plist文件,大家都知道plist文件是OSX默認的參數配置文件。

  • read:是defaults命令的動作參數,也就是讀取

  • /Applications/Safari.app/Contents/Info:是所有讀取的那個plist文件的絕對路徑。其實該文件的全文件名是/Applications/Safari.app/Contents/Info.plist。當時在defaults命令中需要省略.plist

  • CFBundleIdentifier:是在該plist文件中定義程序包標識串的欄位名

執行上面的命令後,應該得到下面的結果:

com.apple.Safari

這就是Safari程序的程序包標識串

難免會有疑問,這個程序包標識串會不會因其他因素而改變呀,有沒有版本問題呀,OSX系統會不會找不到啊等等。這些都可以放心,一個程序如果不能符合Apple的規範,也不會是好程序。如果OSX沒有找到,用戶運行一次程序後,系統會自動為之註冊。

找到之後,我們同樣用open命令來啟動該程序:

open -b com.apple.Safari

就是這樣簡單,適用參數-b。

-----------------------------------------

===打開文件

好了,最後還有一個問題就是如何讓該程序自動打開指定的文件或鏈接呢?這個最簡單,在程序後面填上就好,比如:

open -b com.apple.Safari http://zhihu.com
open -a /Applications/Safari.app http://zhihu.com

好了,最好嘮叨一句,仔細看open的說明。

大功告成了。


open -a /Applications/Google Chrome.app http://www.baidu.com 可以可以


open -a MPlayerX ~/Movie/TokyoHot-388.mkv


Java一個框架,點開代碼不要動,改下文字就行,一般在bin文件夾里,要用ep軟體打開。


推薦閱讀:

TAG:編程 | Linux | Shell編程開發 | 終端命令 |