Was bedeutet das @ bei der Ausgabe von "ls" auf dem OS X-Terminal?

81

Wenn ich ein lsin einem Verzeichnis mache, bekomme ich folgende Ausgabe:

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

Ich habe mich gefragt, was das @bedeutet.

xon1c
quelle
1
xattr -r -d com.apple.TextEncoding *wird es wahrscheinlich entfernen, wenn es sich um eine lokal erstellte Textdatei handelt, z. B. einen C ++ - Header oder eine Quelldatei. Wenn Sie es heruntergeladen haben, xattr -r -d com.apple.quarantine *wird es wahrscheinlich entfernt, sodass Sie beispielsweise ein Makefile bearbeiten können. Aus irgendeinem Grund von Apple nicht erlauben Sie ein Makefile zu bearbeiten, aber nicht können Sie ein Makefile laufen, mit com.apple.quarantine. Go figure ...
jww

Antworten:

75

Es zeigt an, dass die Datei erweiterte Attribute hat. Verwenden Sie ls -l@, um sie zu sehen.

Mit können Sie xattrdiese Attribute bearbeiten. xattr -hgibt Ihnen die Inline-Hilfe dafür.

Ignacio Vazquez-Abrams
quelle
8
Vielen Dank. gefunden com.apple.quarantine, hier ist das, was das ist und wie es der Vollständigkeit halber zu behandeln: superuser.com/questions/28384/...
xon1c
24

Ich glaube, das hat etwas mit der Verfügbarkeit erweiterter Attribute zu tun. Hier ist ein Link zu einer ähnlichen Diskussion:

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

Wenn Sie also beim Ausführen eines ls eine Datei mit einem "@" sehen, versuchen Sie Folgendes:

xattr -l <filename>

Das sollte Ihnen die erweiterten Attribute zeigen.

Weitere Informationen finden Sie in der Hilfe von 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)

Wenn Sie sich die zusätzlichen Attribute mit "-l" ansehen und sie dann mit "-d" entfernen, wird dies wahrscheinlich tun, was Sie wollen. Übe dies jedoch zuerst in einem temporären Verzeichnis und stelle sicher, dass es funktioniert;)

Brent schreibt Code
quelle
Danke vielmals! Offenbar wurde das betreffende Verzeichnis als "com.apple.quarantine" markiert. Dies ist eine Sicherheitsmaßnahme zum Schutz vor zweifelhaften Skripten und Apps aus dem Internet. Das kann unmöglich dazu führen, dass das Verzeichnis nicht aufgelistet wird. : / Ich schaue mich um und poste die Lösung, wenn ich sie finde.
20

Aus der Manpage ls (1) unter Mac OS 10.6.1:

Wenn die Datei oder das Verzeichnis erweiterte Attribute hat, folgt auf das Berechtigungsfeld, das mit der Option -l gedruckt wird, ein '@'. Wenn die Datei oder das Verzeichnis erweiterte Sicherheitsinformationen enthält (z. B. eine Zugriffssteuerungsliste), wird auf das Berechtigungsfeld, das mit der Option -l gedruckt wird, ein Pluszeichen (+) gefolgt.

Aus der Liste der verfügbaren Optionen:

 -@      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.

Auf diese Weise können Sie den Wert dieser erweiterten Optionen sehen. FWIW, ACL-Informationen können mit demselben Dienstprogramm eingestellt werden, das Ihnen wahrscheinlich bereits bekannt ist. :-)

Es scheint nicht einfach zu sein, über die Befehlszeile etwas mit erweiterten Attributen zu tun.

Ed Carrel
quelle
2
Erweiterte Attribute können mit dem Befehl xattr angezeigt und bearbeitet werden (nur in OS X 10.5 und .6 verfügbar). Es scheint keine Manpage zu haben, xattr -hdruckt aber die interne Hilfe.
Gordon Davisson
xattrJetzt gibt es eine Manpage, mit der Sie xattr -l filealle Attribute auflisten oder xattr -p attribute_name fileein bestimmtes Attribut drucken können.
Lri
9

Aus der Manpage für ls :

Wenn die Option -l angegeben ist, werden für jede Datei die folgenden Informationen angezeigt: Dateimodus, Anzahl der Verknüpfungen, Name des Besitzers, Gruppenname, Anzahl der Bytes in der Datei, abgekürzter Monat, Datum der letzten Änderung der Datei, Stunden-Datei zuletzt geändert, Minuten-Datei zuletzt geändert und der Pfadname.

Außerdem wird für jedes Verzeichnis, dessen Inhalt angezeigt wird, die Gesamtzahl der 512-Byte-Blöcke, die von den Dateien im Verzeichnis verwendet werden, in einer eigenen Zeile unmittelbar vor den Informationen für die Dateien im Verzeichnis angezeigt.

Wenn die Datei oder das Verzeichnis erweiterte Attribute hat, folgt auf das Berechtigungsfeld, das mit der Option -l gedruckt wird, ein '@'. Wenn die Datei oder das Verzeichnis über erweiterte Sicherheitsinformationen verfügt (z. B. eine Zugriffssteuerungsliste), wird das von der Option -l ausgedruckte Berechtigungsfeld gefolgt von einem Pluszeichen (+) gefolgt.

Verwenden:

ls -la@e

Weitere Informationen zu Dateien oder Verzeichnissen mit diesen Attributen / Informationen.


quelle
8

Dies hängt mit erweiterten Attributen und der Zugriffssteuerung zusammen.

Aus der Manpage von sun ls :

Das Zeichen nach den Berechtigungen ist eine ACL oder ein Indikator für erweiterte Attribute. Dieses Zeichen ist ein @, wenn der Datei erweiterte Attribute zugeordnet sind und die Option - @ aktiviert ist. Andernfalls ist dieses Zeichen ein Pluszeichen (+), wenn der Datei eine nicht triviale ACL zugeordnet ist, oder ein Leerzeichen, wenn dies nicht der Fall ist.

Andre Miller
quelle
7

Das "@" bedeutet, dass der Datei "erweiterte Attribute" zugeordnet sind.

Wenn Sie " ls -@ -l" tun , können Sie sehen, welche Attribute für jede Datei vorhanden sind. Sie können auch so etwas wie " xattr -l pgsql.so" tun , um die Attribute für eine bestimmte Datei zu sichern.

In der Regel handelt es sich um alte FinderInfo-Dateien, Informationen zur Textkodierung oder die "Quarantäne" -Info mit der Meldung "Diese Datei wurde aus dem Web heruntergeladen. Möchten Sie sie wirklich öffnen?" Warnung.

David Gelhar
quelle
1
Erweiterte Attribute gelten nicht nur für die Mac-Plattform. Eine Reihe von Betriebssystemen unterstützen diese Funktion auf Dateiebene.
Stefan Kendall
@iftrue: Letztendlich handelt es sich jedoch um eine Dateisystemfunktion.
Joey
6

Aus der Manpage vonls :

Das Langformat
[…] Wenn die Datei oder das Verzeichnis erweiterte Attribute hat, -lfolgt auf das von der Option ausgedruckte Berechtigungsfeld ein ' @' Zeichen. […]

Gumbo
quelle
2
Beachten Sie, dass das '@' auch das '+' verbergen kann, das normalerweise vorhanden ist, um anzuzeigen, dass der Datei / dem Verzeichnis eine ACL zugeordnet ist. Versuchen Sie 'ls -le @ O' - das listet xattrs, ACL (falls vorhanden) und auch alle Flags auf.
Gordon Davisson