美文网首页
mac命令行ls -l后显示文件带有扩展属性@的问题

mac命令行ls -l后显示文件带有扩展属性@的问题

作者: Va_ | 来源:发表于2019-06-17 14:42 被阅读0次

    前些天遇到个问题,就是我从sktech上导出的图片不知道为何变成“可执行程序”,这里加引号是因为正常看它没有任何区别,就是个.png图片。但是在终端命令行键入ls -l后,显示

    ls -l
    可以看到三个图片后缀都带了个@符号,尤其是banner.png,后缀还带了x@。而这个x就代表带是可执行文件。
    r:可读、w:可写、x:可执行
    而正常的文件ls -l后是显示什么样的呢?
    正常情况后缀显示
    那么问题来了,ls -l的结果中, 后缀@是什么意思?
    在网上查找一番后得出结论:

    这个符号的意思是指该文件有一些扩展属性。这些属性是一种元数据,存储在HFS文件系统的特殊位置,通常情况下是不可见的。

    在命令行输入ls -l后添加-@选项可以打印这些元数据,如下三种方式均可

    ls -l -@
    ls -@l
    ls -l@
    
    ls -l@
    这里展示了文件有一个或多个元数据,比如com.apple.quarantine属性,通过Google了解到

    File Quarantine是Leopard中的一项新功能,旨在保护用户免受特洛伊木马攻击。它允许从Internet下载文件内容的应用程序将文件置于“隔离”中,以指示该文件可能来自不值得信任的来源。应用程序仅通过将值分配给一个或多个隔离属性来隔离文件,该隔离属性保留有关文件来源的时间和位置的信息。

    其他属性大家有兴趣可以自行了解。

    如何删除文件的@扩展属性?

    可以使用xattr命令,MacOS系统自带的,通过它可以操作 '文件系统的扩展属性'。

    • 您可以使用以下命令删除属性:
    xattr -d com.apple.quarantine filename
    
    • 或者从整个目录中删除:
    xattr -dr com.apple.quarantine diretoryName
    

    最后还是没有弄明白-x是为什么弄上去的,就是为什么banner.png变成了可执行文件了。
    倒是知道了为啥小程序自定义组件中的.acss文件也是可执行文件了,因为用支付宝小程序IDE新建组件就会生成可执行文件,是个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

    相关文章

      网友评论

          本文标题:mac命令行ls -l后显示文件带有扩展属性@的问题

          本文链接:https://www.haomeiwen.com/subject/hkpeaqtx.html