Что означает знак «@» в выводе ls -l?

11

У меня есть этот вывод на MacOSX:

$ ls -l
total 40
-rwxr-xr-x@ 1 levente  staff   52 30 Sep 15:38 pl
-rwxr-xr-x  1 levente  staff  675 14 Feb 17:07 plplay
-rwxr-xr-x@ 1 levente  staff  662 26 Jan 14:13 plstart
-rwxr-xr-x@ 1 levente  staff  296  1 Dec 11:50 plstop
-rwxr-xr-x@ 1 levente  staff  268 29 Dec 18:44 plweb

Что означает "@" рядом с разрешениями?

Leventix
источник

Ответы:

15

Это означает, что эти файлы имеют расширенные атрибуты из файловой системы, которые не являются обычными разрешениями Unix. Попробуйте выполнить xattr plstart и посмотрите, какие настройки установлены.

Кашани
источник
Спасибо, похоже , TextMate имел некоторые свойства на них: com.macromates.caret. Сохранение в MacVim очистило его.
Leventix
1
ls -l@также будет перечислять расширенные атрибуты. Используйте xattr -lдля просмотра значений xattr, а также только имен атрибутов.
Гордон Дэвиссон
5

Кашани имеет право на использование xattrдля отображения лишних битых битов. Более конкретно, в OSX это, вероятно, то, что называется Resource Fork. Базовая файловая система, которую использует OSX, HFS +, имеет дополнительные сегменты данных, которые могут хранить любую информацию. Кстати, вы также можете увидеть то же самое на монтируемых SMB, NTFS и т. Д. В виде файлов ._FILENAME.

Полный текст статьи о Resource Forks можно найти в статье в Википедии или на сайте Apple Developer .

Скотт Пак
источник
Это неверно, расширенные атрибуты не зависят от (теперь мало используемой) Resource Fork и таких инструментов, как xattr, которые имеют дело с одним, не обязательно знают что-либо о другом.
бладиблах