替身路徑使用 - MAC

Table of Contents

我來簡單說明一下 symbolic link 和 alias (替身)的差別

symbolic link 是 file system 層級的東西,所有 unix-like 系統都支援
它是製造出一個 pointer node,指向目標檔案,可使用絕對路徑或相對路徑.
只要有任何存取這個 node 的行為,就會導向到目標去,用法相當單純

而 alias 是 OS 層級的東西,而且 HFS+ 磁區限定,只有 MacOS 看得懂的檔案
當硬碟接上 Linux 或 Windows 時,這個 alias 就形同廢物
但 alias 有一個強大的地方,它是個動態的物件...
不論你的 target 怎麼移動,只要 target 還在同一個磁區上,alias 都會跟上

symbolic link 算是一個單向的 pointer,目標一移動就找不到了
而 alias 會記錄目標的 path, file ID, directory ID, name, file size
當你移動 target 時,原 alias 記錄的 path 失效了..
alias 會根據其它資訊,透過 OSX Spotlight,再從硬碟裡找到目標,並更新 path
所以,不論目標怎麼移動,其實 file/dir ID, name, file size 都是相同的.
就算目標改名改內容,alias 仍會找出最符合的結果.

另外,symbolic link 只能改名字,如果是用相對路徑製造的,本身一移動就失效了
但你可以把 alias 改名字,移到別的地方,甚至還能給它一個專用的 icon。
這項特質對多 users 環境很有用,因為很多地方如 /Applications 只有管理員能寫入
一般 user 可以從 /Applications 製造 alias,放在自己的 ~/Apps 裡面.
使用起來就像是有兩個檔案,有不同的名稱,有不同的 icon,但實際上只有一份程式.
就算管理員把檔案移到其它地方,alias 仍然能繼續使用.

alias 相對於 symbolic link 算是複雜許多的東西,功能也相對強大.
但就是 MacOS 專用,HFS+ 限定,目標移動在相同磁區內限定.
若是放在其它磁區,alias 的行為就受限了,無法 dynamic follow..

--

All Comments

Oliver avatarOliver2011-10-16
推一個
Jacob avatarJacob2011-10-17
哇~ 好詳細
Dorothy avatarDorothy2011-10-20
可以順便請問 原本在下用alias會抓不到檔案的可能原因
嗎? 很多人說 alias常會怪怪的
謝啦~
Lily avatarLily2011-10-20
是跨硬碟問題吧
Daniel avatarDaniel2011-10-20
因為 alias 會參考目標的許多資訊,不僅僅是 path 而已
Yedda avatarYedda2011-10-23
例如 .app 軟體會自動更新,它可能所有內容都改掉了
Hedy avatarHedy2011-10-26
alias 原先記錄舊的資訊找不到目標,卻有另一個檔案更符合
Jack avatarJack2011-10-28
那 alias 就會指向更符合的那個(因為原本的已經不存在了)
Leila avatarLeila2011-11-02
alias 和目標在不同磁區,其實一點都沒問題
Jake avatarJake2011-11-07
可能出問題的,是目標移到其它磁區,或是目標本身磁區非 HFS
Genevieve avatarGenevieve2011-11-07
酷喔 謝啦!
Noah avatarNoah2011-11-10
專業推