題 對於OS X'終端上的“ls”輸出,@是什麼意思?


做的時候 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

我想知道是什麼 @ 手段。


76
2018-06-22 17:57


起源


另見這裡 forthescience.org/blog/2007/12/11/macosx-leopard-extended-ls - Stefano Borini
xattr -r -d com.apple.TextEncoding * 可能會刪除它 如果 它是一個文本文件,如C ++標頭或源文件,在本地創建。如果你下載了,那麼 xattr -r -d com.apple.quarantine * 可能會將其刪除,因此您可以執行編輯Makefile等操作。出於某種原因,Apple 才不是 允許您編輯Makefile,但是 不 允許你運行Makefile com.apple.quarantine。去搞清楚... - jww
也可以看看: apple.stackexchange.com/questions/42177/... - hippietrail


答案:


它表示該文件具有擴展屬性。使用 ls -l@ 去看他們。

您可以使用 xattr 編輯這些屬性。 xattr -h 將為您提供內聯幫助。


72
2018-06-22 18:00



謝謝。發現com.apple.quarantine,這就是為什麼以及為了完整起見如何處理它: superuser.com/questions/28384/... - xon1c


在我的腦海中,我認為與具有擴展屬性的文件有關。以下是類似討論的鏈接:

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”刪除它們,它可能會做你想要的。首先在某個臨時目錄中練習,並確保它有效;)


23
2017-08-26 20:05



非常感謝!似乎有問題的目錄被標記為com.apple.quarantine,這是一種安全措施,可以防止來自網絡的狡猾腳本和應用程序。這不可能導致目錄未列出的問題。 :/如果我找到它,我會環顧四周並發布解決方案。


從Mac OS 10.6.1上的ls(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,可以使用您可能已經知道的相同chmod(1)實用程序來設置ACL信息。 :-)

似乎沒有一種簡單的方法從命令行對擴展屬性執行任何操作。


20
2017-11-06 13:04



可以使用xattr命令查看和操作擴展屬性(僅在OS X v10.5和.6中可用)。它似乎沒有手冊頁,但是 xattr -h 將打印其內部幫助。 - Gordon Davisson
xattr 現在有一個手冊頁,你可以使用 xattr -l file 列出所有屬性或 xattr -p attribute_name file 打印特定屬性。 - user495470


來自 ls的手冊頁

如果給出-l選項,則會為每個文件顯示以下信息:文件模式,鏈接數,所有者名稱,組名稱,文件中的字節數,縮寫月份,上次修改的日期文件,小時文件上次修改,分鍾文件最後修改,以及路徑名。

此外,對於顯示其內容的每個目錄,目錄中文件使用的512字節塊的總數單獨顯示在一行上,緊接在目錄中文件的信息之前。

如果文件或目錄具有擴展屬性,則-l選項打印的權限字段後跟“@”字符。否則,如果文件或目錄具有擴展的安全信息(例如訪問控制列表),則由-l選項打印的權限字段隨後為“+”字符。

使用:

ls -la@e

有關具有這些屬性/信息的文件或目錄的更多信息。


9
2017-11-06 13:05





這與擴展屬性和訪問控制有關。

來自 太陽ls的手冊頁

權限之後的字符是   ACL或擴展屬性指示符。   這個字符是@ if擴展名   屬性與   文件和 - @選項生效。   否則,這個角色是一個加號   如果一個非平凡的符號(+)字符   ACL與文件或a關聯   如果不是空格字符。


8
2017-11-06 13:04





“@”表示該文件具有與之關聯的“擴展屬性”。

如果你做“ls -@ -l“,你可以看到每個文件的屬性。你也可以做類似的事情”xattr -l pgsql.so“轉儲特定文件的屬性。

通常情況下,它們就像老式的FinderInfo,文本編碼信息或“隔離”信息,它們會為您提供“此文件是從網上下載的,您確定要打開它嗎?”警告。


7
2017-07-14 16:43



擴展屬性不是mac平台獨有的。許多操作系統都支持此文件級功能。 - Stefan Kendall
@iftrue:最終它是一個文件系統功能。 - Joey


來自 的頁面 ls

長格式
  [...]如果文件或目錄具有擴展屬性,則由權限字段打印 -l 選項後跟''@'性格。 [...]


6
2017-08-26 20:08



請注意,'@'還可以隱藏通常用於表示文件/目錄具有與之關聯的ACL的'+'。嘗試'ls -le @O' - 即列出xattrs,ACL(如果存在)以及任何標誌。 - Gordon Davisson