2010年6月3日 星期四

Mac OSX 裡的檔案路徑

雖然這已經算是個常識,但是我想還是有很多人不清楚 ... Mac OS 跟 Mac OSX 是完全不同的東西!![1] 原因在於 Mac OS 是 Apple 自創的作業系統,有他自己的 script 語言 (Applescript) 及檔案路徑名稱。在 2002 年的 WWDC 時,Steve Jobs 宣布了 Mac OS9 的葬禮,Mac 作業系統將邁入第十版,並加入 "X" 的字樣,不僅代表 "十" 的意思,也代表 Mac OSX 已成為 Unix-like 的一員。有興趣可以看下面這個影片:



Mac OSX 是一個非常特別的作業系統,原因跟 Steve Jobs 的背景有很大的關係。它結合 Mac OS 及 NeXTSTEP [2],具有非常人性化的圖形使用者介面,又結合 Unix-like 的核心 (BSD),使得 Mac OSX 內也可以執行與 Unix-like 系統內幾乎相同的 Shell command,當然軟體的 port system 也支援,只是因為 NeXTSTEP 傳承下來的 bundle 軟體安裝系統實在太方便了,所以一般人不太常用。

這篇文章要講的是 Unix-like 系統喧賓奪主的一個例子,就是檔案路徑。我想大部分的人都看過類似下面的字串:

/Users/Chris/Documents/MacMagzines/M001.pdf

這類字串稱為 POSIX path,是 Unix-like 系統的檔案路徑表示法。以上述的路徑為例,它代表我的家目錄下的 "文件" 資料夾裡有一個 MacMagzines 資料夾,而裡面有一個 pdf 檔,檔名是 M001。相對地,應該很少人看過下面的表示法:(要不是我有學 Applescript,搞不好一輩子也不會看到這東西....)

Macintosh HD:Users:Chris:Documents:MacMagzines:M001.pdf

意義與前一個路徑完全相同,但上述的才是 Mac OS 原本的檔案路徑表示法,雖然資料夾架構已經變得跟 Unix-like 系統相同,但是表示的方法沒變,以前 Mac-styled path 是用冒號 ":" 將每個 item 分開,而不是 POSIX path 用的斜線 "/" [3]。這兩種檔案路徑系統同時存在於 Mac OSX 系統中,就跟 Applescript 跟 Shell script 共存一樣,這樣對使用者絕對是一大利多,因為他們能夠有更多的工具去使得工作更便利,更何況 Apple 官方免費支援許多強大的開發工具。

由檔案路徑我們就可以看出,為什麼某些符號不允許放在檔名中,比如說檔名前面若有個 ".",則代表隱藏檔,你可以用 mv 指令去使某檔案成為隱藏檔,但是 Finder 不讓你做這種事,所以在 Finder 內不能這樣命名;斜線 "/" 跟冒號 ":" 想當然耳不能被支援,因為這會讓檔案路徑產生混亂,Windows 上也有類似的限制,不過我就不是很熟悉,也不想去查 (攤手)。

我強烈建議每個使用者把自己使用的作業系統的檔案路徑搞清楚,至少要知道自己在用哪些資料夾,這樣可以幫助你了解你的東西放哪,系統的東西放哪,才不會發生找不到檔案或誤刪系統檔的蠢事。當然系統廠商為了讓使用者不要煩惱這種事情,紛紛內建了搜尋功能,可是就我的觀察,大部分的人還是習慣一層層地去資料夾裡找,搜尋只是最後的手段 [4]。所以,多研究一下自己使用的工具絕對不會浪費時間的,還有,最好的搜尋工具就是自己整理資料的習慣 (搜尋系統檔案除外,不過那些事情一般人是不用去操心的),我從來沒有找不到檔案的經驗。


附註
1. 這個網站可以讓你看看 OS0.0~OSX 10.4 的 screenshot   http://iindigo3d.com/blog/?page_id=40
2. 其實 Mac OSX 連 BeOS 的檔案系統 (FileSystem) 都有取材,10.5 的時光機就跟那個有關,只是那份文件實在太長,一直沒有時間看  orz  (或許最近沒工作可以試試看.....)
3. 當然啦,Windows 為了跟別人不一樣,使用了反斜線 "\",不過由於市佔率的關係,很多人會說:"後!其他系統愛搞怪,幹嘛故意跟 Windows 不一樣?"..........@#$%.........
4. 不過像 Windows 的內建搜尋功能一直很兩光,資料夾系統又比其他 OS 亂得多就很遺憾了,請多花點時間瞧一下吧,但我想我這樣勸一定沒有用。所以有沒有發現把桌面塞爆的使用者幾乎是 Win user?因為這樣比較好找資料阿!能夠將資料存入另一個磁區已經很不錯了,系統槽在幹嘛很少人在管,也不需要管,反正資料存在系統槽也很危險,一重灌就完蛋了。

沒有留言:

張貼留言