macOS 中 terminal ls 出的文件带 @ 是什么意思

macOS 中使用终端 ls 列出的文件中有一些文件会带有 @ 符号,一直不知道具体表示什么意思

今天查了下,这个 @ 符号是 macOS 系统独有的,表示文件带有一些附加的信息,比如你在 Finder 中给文件添加的 tag 就属于此类。

看下面这个例子, 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

一、查看文件的附加属性

1. 查看属性名

可以通过 xattr 来查看对应信息,其添加的附加属性信息都是以键值对形式存储的,就是说有 属性名属性值
直接 xattr 文件 的形式可以查看文件上所有的 属性名,可以看到下面这个文件有两个属性名

Kyle@Kyles-MBP attr test % xattr website.txt 
com.apple.FinderInfo
com.apple.metadata:_kMDItemUserTags

2. 查看属性名和值

通过添加 -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

3. 列文件时显示附加属性名

在 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 显示某个附加属性的值
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
                    macOS 中 terminal ls 出的文件带 @ 是什么意思macOS 中使用终端 ls 列出的文件中有一些文件会带有 @ 符号,一直不知道具体表示什么意思今天查了下,这个 @ 符号是 macOS 系统独有的,表示文件带有一些附加的信息,比如你在 Finder 中给文件添加的 tag 就属于此类。看下面这个例子, website.txt 在 finder 中是添加了 tag 的,所以它后面会有 @ 符号。Kyle@Kyles-MBP attr test % lltotal 16-rw-r
1、列文件
ls 参数 目录名        例: 看看驱动目录下有什么:ls /System/Library/Extensions
参数 -w 显示文,-l 详细信息, -a 包括隐藏文件
2、转换目录     
cd    例:想到驱动目录下溜达一圈   cd /System/Library/Extensions
3、建立新目录
mkdir 目录名     
				
前些天遇到个问题,就是我从sktech上导的图片不知道为何变成“可执行程序”,这里加引号是因为正常看它没有任何区别,就是个.png图片。但是在终端命令行键入ls -l后,显示 可以看到三个图片后缀都了个@符号,尤其是banner.png,后缀还了x@。而这个x就代表是可执行文件。 r:可读、w:可写、x:可执行 而正常的文件ls -l后是显示什么样的呢? 那么问题来了,ls -l的结...
格式:“电脑用户名:当前路径 账户名$ 一条命令 ” 命令的构成:Command Name、Options、Arguments、Extras 四个部分,很多情况下后面三部分都是可省略的。 Options 部分用-作为前导符。其许多命令的 Options 部分只包含单个字母,这时可以合并。例如:ls -lA和ls -l -A是等效的。 Arguments...
`macos gyp info using node-gyp@3.8.0` 是指在 macOS 系统上使用了 node-gyp 版本为 3.8.0。 node-gyp 是一个用于编译 Node.js 模块的工具,它使用了 Python 和 Makefile。它可以帮助开发人员编译一些依赖C/C++代码的 Node.js 模块,例如一些需要底层库支持的模块。 在macOS上使用 node-gyp 编译模块时,通常会在控制台上输类似“gyp info using node-gyp@3.8.0”这样的信息,这是 node-gyp 提供的一些编译信息。 这条信息表明你的项目正在使用 node-gyp 版本为 3.8.0 进行编译。这个版本号是指的 node-gyp 的版本,用来确定编译的工具链和配置。 需要注意的是,node-gyp 的版本可能会因为项目或系统的更新而改变,不同的版本可能会有一些功能上的差异。因此,根据具体项目的需求,可能需要使用不同的 node-gyp 版本来编译模块。