Що означає "@" на виході "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

Мені було цікаво, що @означає.



1
xattr -r -d com.apple.TextEncoding *ймовірно, видалить його, якщо його текстовий файл, як-от заголовок C ++ або вихідний файл, створений локально. Якщо ви завантажили його, то xattr -r -d com.apple.quarantine *, швидше за все, його видалите, тож ви можете робити такі речі, як редагування Makefile. З якої - то причини, Apple НЕ дозволяє редагувати файл збірки, але це дозволить вам запустити make - файл, з com.apple.quarantine. Перейти до фігури ...
jww

Відповіді:


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

Із man-сторінки 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), про яку ви, мабуть, вже знаєте. :-)

З командного рядка не представляється простим способом зробити що-небудь із розширеними атрибутами.


2
Розширені атрибути можна переглядати та керувати командою xattr (доступно лише в OS X v10.5 та .6). Здається, це не чоловіча сторінка, але xattr -hвона надрукує внутрішню допомогу.
Гордон Девіссон

xattrтепер є довідкова сторінка, і ви можете використовувати xattr -l fileдля переліку всіх атрибутів або xattr -p attribute_name fileдля друку певного атрибута.
Лрі

9

На сторінці man для ls :

Якщо параметр -l заданий, для кожного файлу відображається така інформація: режим файлу, кількість посилань, ім'я власника, назва групи, кількість байтів у файлі, скорочений місяць, файл дня місяця востаннє змінено, файлу години останнього змінення, хвилину останнього змінення файла та імені шляху.

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

Якщо файл або каталог має розширені атрибути, за полем дозволів, надрукованим параметром -l, слідує символ "@". В іншому випадку, якщо файл або каталог має розширену інформацію про захист (наприклад, список контролю доступу), поле дозволів, надруковане параметром -l, буде відхилене, після чого символ "+".

Використання:

ls -la@e

для отримання додаткової інформації про файли або каталоги з цими атрибутами / інформацією.


8

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

Від сторінки чоловіка sun ls :

Символ після дозволів є індикатором ACL або розширених атрибутів. Цей символ є @, якщо розширені атрибути пов'язані з файлом і діє опція - @. В іншому випадку цей символ є символом плюс (+), якщо нетривіальний ACL асоціюється з файлом або символом пробілу, якщо ні.


7

"@" Означає, що файл має "розширені атрибути", пов'язані з ним.

Якщо ви робите " ls -@ -l", ви можете побачити, які атрибути є для кожного файлу. Ви також можете зробити щось на зразок " xattr -l pgsql.so", щоб скинути атрибути для певного файлу.

Зазвичай вони такі речі, як Older School FinderInfo, інформація про кодування тексту або інформація про "карантин", яка дає вам "Цей файл завантажено з Інтернету. Ви впевнені, що хочете його відкрити?" увага.


1
Розширені атрибути не властиві платформі mac. Ряд операційних систем підтримує цю функцію на рівні файлів.
Стефан Кендалл

@iftrue: зрештою, це функція файлової системи.
Joey

6

З чоловічої сторінкиls :

Довгий формат
[…] Якщо файл або каталог має розширені атрибути, за полем дозволів, надрукованим -lпараметром, слідує @символ ' '. […]


2
Зауважте, що "@" також може приховати "+", яке зазвичай є там, щоб вказати, що файл / каталог має ACL, пов'язаний з ним. Спробуйте "ls -le @ O" - це список xattrs, ACL (якщо є), а також будь-які прапори.
Гордон Девіссон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.