看板 MAC 關於我們 聯絡資訊
我來簡單說明一下 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.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.197.209
mp607:推一個 10/13 07:30
tanzmitmir:哇~ 好詳細 10/13 14:18
tanzmitmir:可以順便請問 原本在下用alias會抓不到檔案的可能原因 10/13 14:19
tanzmitmir:嗎? 很多人說 alias常會怪怪的 10/13 14:19
tanzmitmir:謝啦~ 10/13 14:19
tanzmitmir:是跨硬碟問題吧 10/13 14:22
tyf99:因為 alias 會參考目標的許多資訊,不僅僅是 path 而已 10/13 16:56
tyf99:例如 .app 軟體會自動更新,它可能所有內容都改掉了 10/13 16:58
tyf99:alias 原先記錄舊的資訊找不到目標,卻有另一個檔案更符合 10/13 16:59
tyf99:那 alias 就會指向更符合的那個(因為原本的已經不存在了) 10/13 17:00
tyf99:alias 和目標在不同磁區,其實一點都沒問題 10/13 17:02
tyf99:可能出問題的,是目標移到其它磁區,或是目標本身磁區非 HFS 10/13 17:03
tanzmitmir:酷喔 謝啦! 10/13 19:21
applewarm:專業推 10/14 10:45