前些天遇到個問題,就是我從sktech上導出的圖片不知道為何變成“可執(zhí)行程序”牧愁,這里加引號是因為正常看它沒有任何區(qū)別外莲,就是個.png圖片猪半。但是在終端命令行鍵入ls -l
后,顯示
ls -l
可以看到三個圖片后綴都帶了個@符號,尤其是banner.png办龄,后綴還帶了x@烘绽。而這個x就代表帶是可執(zhí)行文件。
r:可讀俐填、w:可寫安接、x:可執(zhí)行
而正常的文件
ls -l
后是顯示什么樣的呢?正常情況后綴顯示
那么問題來了英融,ls -l的結(jié)果中, 后綴@是什么意思?
在網(wǎng)上查找一番后得出結(jié)論:
這個符號的意思是指該文件有一些擴展屬性盏檐。這些屬性是一種元數(shù)據(jù),存儲在HFS文件系統(tǒng)的特殊位置驶悟,通常情況下是不可見的胡野。
在命令行輸入ls -l后添加-@選項可以打印這些元數(shù)據(jù),如下三種方式均可
ls -l -@
ls -@l
ls -l@
ls -l@
這里展示了文件有一個或多個元數(shù)據(jù)痕鳍,比如
com.apple.quarantine
屬性硫豆,通過Google了解到
File Quarantine是Leopard中的一項新功能,旨在保護用戶免受特洛伊木馬攻擊笼呆。它允許從Internet下載文件內(nèi)容的應用程序?qū)⑽募糜凇案綦x”中熊响,以指示該文件可能來自不值得信任的來源。應用程序僅通過將值分配給一個或多個隔離屬性來隔離文件诗赌,該隔離屬性保留有關(guān)文件來源的時間和位置的信息汗茄。
其他屬性大家有興趣可以自行了解。
如何刪除文件的@擴展屬性铭若?
可以使用xattr命令洪碳,MacOS系統(tǒng)自帶的,通過它可以操作 '文件系統(tǒng)的擴展屬性'叼屠。
- 您可以使用以下命令刪除屬性:
xattr -d com.apple.quarantine filename
- 或者從整個目錄中刪除:
xattr -dr com.apple.quarantine diretoryName
最后還是沒有弄明白-x是為什么弄上去的瞳腌,就是為什么banner.png變成了可執(zhí)行文件了。
倒是知道了為啥小程序自定義組件中的.acss文件也是可執(zhí)行文件了环鲤,因為用支付寶小程序IDE新建組件就會生成可執(zhí)行文件纯趋,是個IDE的bug
參考:
Apple Communities: How to remove com.apple.quarantine from the files in a tar archive
MacKuba: "ls" on Mac and extended file attributes