When using Apple’s macOS Terminal application, sometimes you’ll issue the
ls -l command and see
@ characters in the
ls command output, like this:
$ ls -l total 1280 -rw-r--r--@ 1 al staff 1695 Dec 24 17:19 ca-context-bounds.md -rw-r--r-- 1 al staff 4064 Dec 24 14:41 ca-type-classes.md -rw-r--r--@ 1 al staff 20580 Dec 24 14:41 collections-classes.md -rw-r--r--@ 1 al staff 15960 Dec 24 14:29 control-structures.md
Today I learned that the
@ character means that the file has extended attributes.
This SO page shows that you can issue these macOS
xattr commands to see and manage the extended file attributes:
xattr -l file # lists the names of all xattrs xattr -w attr_name attr_value file # sets xattr attr_name to attr_value xattr -d attr_name file # deletes xattr attr_name xattr -c file # deletes all xattrs xattr -h # prints help
That same page notes that you can use the
ls -l@ command to see the attributes in the
$ ls -l@ total 1280 -rw-r--r--@ 1 al staff 1695 Dec 24 17:19 ca-context-bounds.md com.macromates.selectionRange 1 com.macromates.visibleIndex 1
I use the MacroMates TextMate editor quite a bit, and apparently it stores those extended file attributes for each file I edited, or perhaps each file I had visible when I closed the editor.
If you ever wondered what the
@ character in the Mac
ls -l output means, I hope that’s helpful.