@ หมายถึงอะไรในผลลัพธ์ของ“ 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 ได้ ด้วยเหตุผลบางอย่างแอปเปิ้ลไม่ได้ช่วยให้คุณสามารถแก้ไข Makefile แต่ไม่ช่วยให้คุณสามารถเรียกใช้ Makefile com.apple.quarantineด้วย ไปคิด ...
jww

ดูเพิ่มเติมที่: 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) man page บน 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จะพิมพ์ความช่วยเหลือภายใน
Gordon Davisson

xattrตอนนี้มี man page และคุณสามารถใช้xattr -l fileเพื่อแสดงรายการคุณสมบัติทั้งหมดหรือxattr -p attribute_name fileพิมพ์คุณสมบัติเฉพาะ
Lri

9

จากman page สำหรับ ls :

หากระบุอ็อพชัน -l ข้อมูลต่อไปนี้จะปรากฏสำหรับแต่ละไฟล์: โหมดไฟล์, จำนวนลิงก์, ชื่อเจ้าของ, ชื่อกลุ่ม, จำนวนไบต์ในไฟล์, เดือนย่อ, ไฟล์วันที่เดือนถูกแก้ไขล่าสุด ไฟล์ชั่วโมงที่แก้ไขล่าสุดไฟล์นาทีที่แก้ไขล่าสุดและชื่อพา ธ

นอกจากนี้สำหรับแต่ละไดเร็กทอรีที่มีเนื้อหาที่จะแสดงจำนวนรวมของบล็อก 512- ไบต์ที่ใช้โดยไฟล์ในไดเรกทอรีจะปรากฏบนบรรทัดด้วยตัวเองทันทีก่อนที่ข้อมูลสำหรับไฟล์ในไดเรกทอรี

หากไฟล์หรือไดเรกทอรีมีคุณสมบัติเพิ่มเติมฟิลด์สิทธิ์ที่พิมพ์โดยตัวเลือก -l จะตามด้วยอักขระ '@' มิฉะนั้นหากไฟล์หรือไดเรกทอรีมีการขยายข้อมูลความปลอดภัย (เช่นรายการการควบคุมการเข้าถึง) ฟิลด์สิทธิ์ที่พิมพ์โดยตัวเลือก -l คือ fol-lowed ตามด้วย lowed ด้วยอักขระ '+'

ใช้:

ls -la@e

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์หรือไดเรกทอรีที่มีคุณสมบัติ / ข้อมูลเหล่านั้น


8

สิ่งนี้เกี่ยวข้องกับแอตทริบิวต์เพิ่มเติมและการควบคุมการเข้าถึง

จากหน้าคนของดวงอาทิตย์ ls :

อักขระหลังการอนุญาตคือ ACL หรือตัวบ่งชี้คุณลักษณะเพิ่มเติม อักขระนี้เป็น @ หากแอตทริบิวต์เพิ่มเติมมีการเชื่อมโยงกับไฟล์และตัวเลือก - @ มีผลบังคับใช้ มิฉะนั้นตัวละครตัวนี้เป็นตัวอักษรเครื่องหมายบวก (+) ถ้า ACL ที่ไม่ใช่เรื่องเล็กน้อยมีความเกี่ยวข้องกับไฟล์หรืออักขระช่องว่างถ้าไม่


7

"@" หมายความว่าไฟล์มี "คุณสมบัติเพิ่ม" ที่เกี่ยวข้อง

หากคุณทำ " ls -@ -l" คุณจะเห็นว่ามีแอตทริบิวต์ใดบ้างสำหรับแต่ละไฟล์ นอกจากนี้คุณยังสามารถทำอะไรบางอย่างเช่น " xattr -l pgsql.so" เพื่อถ่ายโอนแอตทริบิวต์สำหรับไฟล์เฉพาะ

โดยทั่วไปแล้วพวกเขาจะเป็น FinderInfo แบบเก่าข้อมูลการเข้ารหัสข้อความหรือข้อมูล "การกักกัน" ที่ให้คุณ "ไฟล์นี้ถูกดาวน์โหลดจากเว็บคุณแน่ใจหรือไม่ว่าคุณต้องการเปิด" การเตือน


1
แอตทริบิวต์เพิ่มเติมไม่ซ้ำกันสำหรับแพลตฟอร์ม mac ระบบปฏิบัติการจำนวนหนึ่งรองรับคุณสมบัติระดับไฟล์นี้
Stefan Kendall

@iftrue: ท้ายที่สุดแล้วมันเป็นคุณสมบัติของระบบไฟล์
Joey

6

จากหน้าคนของls :

รูปแบบยาว
[... ] หากไฟล์หรือไดเรกทอรีมีคุณสมบัติเพิ่มเติมฟิลด์สิทธิ์ที่พิมพ์โดย-lตัวเลือกจะตามด้วย@อักขระ '' [ ... ]


2
โปรดทราบว่า '@' ยังสามารถซ่อน '+' ที่ปกติจะอยู่ที่นั่นเพื่อระบุว่าไฟล์ / ไดเรกทอรีมี ACL ที่เกี่ยวข้อง ลอง 'ls -le @ O' - ที่จะแสดงรายการ xattrs, ACL (ถ้ามี) และยังมีการตั้งค่าสถานะใด ๆ
Gordon Davisson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.