欢迎各位兄弟 发布技术文章
这里的技术是共享的
macOS 中使用终端 ls
列出的文件中有一些文件会带有 @
符号,一直不知道具体表示什么意思
今天查了下,这个 @
符号是 macOS 系统独有的,表示文件带有一些附加的信息,比如你在 Finder
中给文件添加的 tag
就属于此类。
在macOS中,终端中使用ls
命令列出的文件中有一些文件会带有@符号,这个符号是macOS系统独有的,表示文件带有一些附加的信息。
这些附加信息可能包括在Finder中给文件添加的标签(tag)等。例如,如果在Finder中给一个文件添加了标签,那么在终端使用ls
命令列出的文件名后面就会带有@符号。
因此,如果在macOS中使用ls
命令看到文件名后面带有@符号,那么说明该文件有一些额外的信息被添加了进去,需要使用其他命令或者工具来查看和编辑这些信息。
看下面这个例子, website.txt
在 finder 中是添加了 tag
的,所以它后面会有 @
符号。
Kyle@Kyles-MBP attr test % ll
total 16
-rw-r--r-- 1 Kyle staff 0 Apr 8 09:04 README.md
-rw-r--r-- 1 Kyle staff 1008 Apr 8 09:05 kyle-file.txt
-rw-r--r--@ 1 Kyle staff 526 Apr 8 09:06 website.txt
可以通过 xattr
(xattr
代表 "extended attributes"。)来查看对应信息,其添加的附加属性信息都是以键值对形式存储的,就是说有 属性名
和 属性值
直接 xattr 文件
的形式可以查看文件上所有的 属性名
,可以看到下面这个文件有两个属性名
Kyle@Kyles-MBP attr test % xattr website.txt
com.apple.FinderInfo
com.apple.metadata:_kMDItemUserTags
通过添加 -l
参数 xattr -l 文件
,可以查看 属性名 + 属性值
Kyle@Kyles-MBP attr test % xattr -l website.txt
com.apple.FinderInfo:
00000000 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
com.apple.metadata:_kMDItemUserTags:
00000000 62 70 6C 69 73 74 30 30 A1 01 5A 50 65 72 73 6F |bplist00..ZPerso|
00000010 6E 61 6C 0A 32 08 0A 00 00 00 00 00 00 01 01 00 |nal.2...........|
00000020 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 15 |.......|
00000037
在 ls 文件的时候,也可以通过添加参数来查看文件的附加属性名 ls -l@
Kyle@Kyles-MBP attr test % ls -l@
total 16
-rw-r--r-- 1 Kyle staff 0 Apr 8 09:04 README.md
-rw-r--r-- 1 Kyle staff 1008 Apr 8 09:05 kyle-file.txt
-rw-r--r--@ 1 Kyle staff 526 Apr 8 09:06 website.txt
com.apple.FinderInfo 32
com.apple.metadata:_kMDItemUserTags 55
使用 xattr
命令来操作文件的 附加属性
-c 清除所有附加属性信息
-w 添加某个附加属性信息
-d 删除某个附加属性信息
-p 显示某个附加属性的值
修饰参数
-r 操作包含子文件夹的文件
-l 附加属性名和值
Kyle@Kyles-MBP attr test % xattr -p com.apple.FinderInfo website.txt
00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
其它具体的操作说明可以查看说明手册,输入 man xattr
查看
说一些常用的
# 删除某个文件所有附加属性
xattr -c 文件名
# 删除当前文件夹下所有文件的附加属性值
xattr -c *
# 删除当前文件夹下所有文件的附加属性值,包含子文件夹的所有文件
xattr -cr *
所有这些带 @
符号的文件,含有附加属性的文件,最常见的就是我们常用的 tag 标记,我知道的还有解压软件 The Unarchiver
解压出的文件也会带有它自己的附加属性值。
应用商店下载的软件也会有附加信息:
Kyle@Kyles-MBP /Applications % xattr -l EasyRes.app
com.apple.appstore.store_cohort: 7|date=1571481000000&sf=143465&pgtp=Search&pgid=d466721e-b8d6-42d8-aba2-e823828faa8c&ctxt=Search&issrch=1
com.apple.appstore.storefront: 143465
com.apple.appstore.vendor_name: Chris Miles
来自 https://zhuanlan.zhihu.com/p/363120823