Что означает @ на выходе «ls» на терминале OS X?

81

При выполнении 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

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

xon1c
источник
см. также здесь forthescience.org/blog/2007/12/11/macosx-leopard-extended-ls
Стефано Борини
1
xattr -r -d com.apple.TextEncoding *вероятно, удалит его, если его текстовый файл, такой как заголовок C ++ или исходный файл, создан локально. Если вы загрузили его, то xattr -r -d com.apple.quarantine *, скорее всего, удалите его, так что вы можете делать такие вещи, как редактирование Makefile. По какой - то причине, Apple не позволяет редактировать файл сборки, но это позволит вам запустить make - файл, с com.apple.quarantine. Пойди
разберись
Смотрите также: apple.stackexchange.com/questions/42177/…
hippietrail

Ответы:

75

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

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

Игнасио Васкес-Абрамс
источник
8
Благодарю. нашел com.apple.quarantine, вот что это такое и как с ним бороться ради полноты: superuser.com/questions/28384/…
xon1c
24

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

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», это, вероятно, сделает то, что вы хотите. Сначала попрактикуйтесь во временном каталоге и убедитесь, что он работает;)

Брент пишет код
источник
Большое спасибо! Казалось бы, рассматриваемый каталог был помечен как com.apple.quarantine, что является мерой безопасности для защиты от хитрых скриптов и приложений из сети. Это не может вызвать проблему каталога, не перечисляющего. : / Я посмотрю больше и выложу решение, если найду его.
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.

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

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

Эд Каррел
источник
2
Расширенные атрибуты можно просматривать и манипулировать ими с помощью команды xattr (доступно только в OS X v10.5 и .6). Похоже, у него нет xattr -hсправочной страницы, но будет напечатана его внутренняя справка.
Гордон Дэвиссон
xattrтеперь есть справочная страница, и вы можете использовать xattr -l fileее xattr -p attribute_name fileдля вывода списка всех атрибутов или для печати определенного атрибута.
Lri
9

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

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

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

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

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

ls -la@e

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


источник
8

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

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

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

Андре Миллер
источник
7

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

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

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

Дэвид Гелхар
источник
1
Расширенные атрибуты не являются уникальными для платформы Mac. Ряд операционных систем поддерживают эту функцию на уровне файлов.
Стефан Кендалл
@iftrue: в конечном счете, это функция файловой системы.
Джои
6

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

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

гумбо
источник
2
Обратите внимание, что «@» также может скрывать «+», который обычно находится там, чтобы указать, что с файлом / каталогом связан ACL. Попробуйте 'ls -le @ O' - там будут перечислены xattrs, ACL (если есть), а также любые флаги.
Гордон Дэвиссон