
cp
一位朋友在使用複製磁碟映像(準確地說是稀疏包)時遇到問題。我發現他使用的行將所有 /contents/ (稀疏包是包,即像 GUI 中的文件一樣處理的目錄)複製到新目錄,而不是複製稀疏包本身。
後來我在計算機上創建了一個稀疏包來進行實驗cp
並重現了他所得到的行為。隨後,Finder 和 Dock 開始/tmp
像文件一樣對待。單擊我在側邊欄中為其創建的條目將打開終端視窗/tmp ; exit;
(當然,這會失敗,因為它/tmp
是目錄)。我仍然可以像平常一樣使用堆疊,除了Open in Finder
底部的選項,它會嘗試執行它。
奇怪的是,我仍然可以/tmp
透過開啟子目錄並使用Go > Enclosing Folder
命令 ( command+ up arrow) 在 Finder 中開啟。我也可以透過命令列正常存取它。
我嘗試刪除並重新建立側邊欄條目和堆疊,但所做的只是導致 Dock 將其顯示為文件,並在我單擊它時嘗試立即執行它。然後我嘗試重新啟動以清除它;它似乎確實正常清除,但這並沒有影響問題。
誰能解釋一下這個問題?
更新:我想嘗試一下ls -l
,它的權限字段末尾有一個@。我發現它有一個com.apple.FinderInfo
擴展屬性,儘管我嘗試閱讀它只得到了這個:
00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
刪除擴展屬性(xattr -d com.apple.FinderInfo /tmp
就像我自己一樣,沒有提升的權限)似乎已經解決了這個問題,儘管從我對它的快速搜索中可以看出,它可能會產生其他負面後果(而且我不確定是否存在com.apple.FinderInfo
屬性之前...)。我仍然想知道可能發生了什麼以及為什麼我會出現這種行為。
答案1
FinderInfo xattr 中的「20」表示捆綁位元已設定。捆綁位告訴 Finder 將資料夾顯示為文件,而不是資料夾。我懷疑這個屬性是從sparsebundle 複製的(這實際上是一個資料夾,但Finder 顯示為一個簡單檔案)。因此,您所看到的或多或少是設定該標誌後的預期行為。