76

При выполнении ls в каталоге я получаю следующий вывод:

drwxr-xr-x@ 12 xonic  staff    408 22 Jun 19:00 .
drwxr-xr-x   9 xonic  staff    306 22 Jun 19:42 ..
-rwxrwxrwx@  1 xonic  staff   6148 25 Mai 23:04 .DS_Store
-rw-r--r--@  1 xonic  staff  17284 22 Jun 00:20 filmStrip.cpp
-rw-r--r--@  1 xonic  staff   3843 21 Jun 21:20 filmStrip.h

Мне было интересно, что означает @ .

7 ответов7

72

Это указывает на то, что файл имеет расширенные атрибуты. Используйте ls -l@ чтобы увидеть их.

Вы можете использовать xattr для редактирования этих атрибутов. xattr -h предоставит вам встроенную помощь для этого.

23

Мне кажется, что это как-то связано с файлом, имеющим расширенные атрибуты. Вот ссылка на подобное обсуждение:

http://discussions.apple.com/thread.jspa?messageID=5791060

Поэтому, если вы видите файл с «@», когда вы делаете ls, попробуйте сделать это:

xattr -l <filename>

Это должно показать вам расширенные атрибуты.

Вы можете проверить справку xattr для более подробной информации:

xattr --help
usage: xattr [-l] file [file ...]
       xattr -p [-l] attr_name file [file ...]
       xattr -w attr_name attr_value file [file ...]
       xattr -d attr_name file [file ...]

The first form lists the names of all xattrs on the given file(s).
The second form (-p) prints the value of the xattr attr_name.
The third form (-w) sets the value of the xattr attr_name to attr_value.
The fourth form (-d) deletes the xattr attr_name.

options:
  -h: print this help
  -l: print long format (attr_name: attr_value)

Кажется, что если вы посмотрите на дополнительные атрибуты с помощью «-l», а затем удалите их с помощью «-d», это, вероятно, сделает то, что вы хотите. Сначала попрактикуйтесь во временной директории и убедитесь, что она работает;)

20

Со страницы руководства ls(1) в Mac OS 10.6.1:

Если файл или каталог имеет расширенные атрибуты, за полем разрешений, напечатанным параметром -l, следует символ «@». В противном случае, если файл или каталог имеет расширенную информацию о безопасности (например, список контроля доступа), за полем разрешений, напечатанным параметром -l, следует символ «+».

Из списка доступных опций:

 -@      Display extended attribute keys and sizes in long (-l) output.

 -e      Print the Access Control List (ACL) associated with the file, if present, in long (-l) output.

Это позволит вам увидеть значение этих расширенных опций. FWIW, информация ACL может быть установлена с помощью той же утилиты chmod(1), о которой вы, вероятно, уже знаете. :-)

Похоже, что из командной строки нет простого способа сделать что-либо с расширенными атрибутами.

9

Со страницы руководства для ls:

Если задана опция -l, для каждого файла отображается следующая информация: режим файла, количество ссылок, имя владельца, имя группы, количество байтов в файле, сокращенный месяц, последний день изменения файла дня месяца, последний измененный часовой файл, последний измененный минутный файл и путь.

Кроме того, для каждого каталога, содержимое которого отображается, общее количество 512-байтовых блоков, используемых файлами в каталоге, отображается в отдельной строке непосредственно перед информацией для файлов в каталоге.

Если файл или каталог имеет расширенные атрибуты, за полем разрешений, напечатанным параметром -l, следует символ «@». В противном случае, если файл или каталог имеет расширенную информацию о безопасности (например, список контроля доступа), поле разрешений, напечатанное параметром -l, следует за ним, а за ним следует символ «+».

Использование:

ls -la@e

для получения дополнительной информации о файлах или каталогах с этими атрибутами / информацией.

8

Это связано с расширенными атрибутами и контролем доступа.

Из справочной страницы Sun ls:

Символ после разрешений является ACL или индикатором расширенных атрибутов. Этот символ является символом @, если с файлом связаны расширенные атрибуты и действует параметр - @. В противном случае этот символ является символом плюса (+), если нетривиальный ACL связан с файлом, или пробел, если нет.

7

«@» Означает, что с файлом связаны "расширенные атрибуты".

Если вы выполните команду « ls -@ -l », вы увидите, какие атрибуты существуют для каждого файла. Вы также можете сделать что-то вроде " xattr -l pgsql.so ", чтобы вывести атрибуты для определенного файла.

Обычно это такие вещи, как FinderInfo старой школы, информация о кодировке текста или информация о "карантине", которая дает вам «Этот файл был загружен из Интернета, вы уверены, что хотите открыть его?предупреждение

6

Со страницы руководства ls:

Длинный формат
[…] Если файл или каталог имеет расширенные атрибуты, за полем разрешений, напечатанным параметром -l следует символ « @ ». [...]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .