Trường hợp Mac OS X lưu trữ thông tin liên kết tệp?


24

Tôi biết có một ngăn tùy chọn hệ thống để sửa đổi thủ công các liên kết tệp trong Mac OS X Leopard. Tuy nhiên, tôi tò mò không biết Leopard thực sự lưu trữ những thông tin này ở đâu?

Tôi không quan tâm đến các phương pháp để thay đổi chúng. Tôi muốn biết tệp cấu hình hoặc cơ sở dữ liệu (như sổ đăng ký trong Windows) nơi lưu trữ các ánh xạ đó.


một số vui lòng gắn thẻ lại với "mac" và "osx" (những thẻ đó được sử dụng rộng rãi hơn)
Thilo

Có một cuộc thảo luận về meta về điều này nhưng tôi không thể kết luận thẻ nào thắng.
Mehrdad Afshari

Tôi cho rằng cách tốt nhất để quyết định người chiến thắng là nhìn vào các con số. Phổ biến đánh bại phân loại trên các trang mạng xã hội.
Thilo

Xem thêm: superuser.com/questions/17761/ khăn (hơi khác nhau, nhưng cũng có thể hữu ích).
Jonathan Leffler

Câu trả lời:


12

Xin lỗi, câu hỏi này đã cũ, nhưng câu trả lời thực sự sai.

Như công cụ đã đề cập, câu trả lời của Doug Harris chỉ đúng một phần.

Tệp Cơ sở dữ liệu Dịch vụ Khởi chạy , là nơi lưu trữ tất cả thông tin cho tất cả các ứng dụng đã biết và loại tài liệu mà chúng có thể xử lý được lưu trữ, được đặt ở vị trí sau:

Sư tử:

/private/var/folders/**/**/-Caches-/com.apple.LaunchServices-034501.csstore

Báo tuyết:

/private/var/folders/**/**/-Caches-/com.apple.LaunchServices-025501.csstore

Báo:

/Library/Caches/com.apple.LaunchServices-023501.csstore

Các /private/var/folders/thư mục là nơi "an toàn" Caches và thư mục tạm thời cho mỗi người dùng được lưu trữ. Các ** trong đường dẫn hiển thị ở trên sẽ giống như /dl/dlXWtS5WH9SNboPxxrDIyE+++TI/hoặc một chuỗi ký tự tối nghĩa khác để tránh đoán.

Lưu ý rằng tên com.apple.LaunchServices-025501.csstorenày bao gồm ID người dùng (tên của tôi 501) được gắn vào -025hậu tố, là duy nhất cho Snow Leopard. (Trong mỗi phiên bản OS X, Apple có xu hướng thay đổi hậu tố phân biệt được sử dụng để ngăn các sự cố tương thích giữa các phiên bản OS X khác nhau. Bạn sẽ nhận thấy rằng Leopard đã sử dụng -023). Sư tử đang sử dụng -034hậu tố.


2
El Capitan 10.11.4:$TMPDIR/../0/com.apple.LaunchServices-134$(id -u).csstore
cướp mayoff

Nhưng đó là những thư mục tạm thời. Chúng không thể là nơi nó được lưu trữ tập trung.
Melab

1
@Melab: Mỗi ứng dụng trên hệ thống Mac có một Info.plisttệp ( developer.apple.com/l Library / mac / document / MacOSX / Conceptionual / Khăn ) mô tả các khả năng của nó. Launch Services tập hợp tất cả các thông tin đó một cách linh hoạt để tạo cơ sở dữ liệu được đề cập ở trên. Nếu tệp cơ sở dữ liệu đã bị xóa Dịch vụ khởi chạy (cụ thể là lsregistercông cụ - ss64.com/osx/lsregister.html ) có thể tạo lại nó.
NSGod

Trên thực tế, chỉ từ đường dẫn, có vẻ như nó được lưu trữ cùng với các thư mục tạm thời ( ..có nghĩa là "tăng cấp").
SilverWolf - Phục hồi Monica

18

OS X sử dụng hệ thống "mặc định" - đây là một bài viết hay với rất nhiều ví dụ. Các tệp được lưu trữ trong ~ / Library / Preferences, nhưng tốt nhất là thao tác bằng lệnh "mặc định" thay vì chỉnh sửa trực tiếp các bảng.

Liên kết tệp được lưu trữ dưới miền com.apple.LaunchService. Từ liên kết trên, bạn có thể thấy danh sách với lệnh này:

defaults read com.apple.LaunchServices | grep -v LSBundleLocator

Nhiều thông tin hơn về Dịch vụ khởi chạy cụ thể, có thể được tìm thấy trong Hướng dẫn lập trình dịch vụ khởi chạy của Apple


15

Câu trả lời của @Doug Harris chỉ đúng một phần. Hệ thống mặc định lưu trữ các bổ sung cục bộ hoặc ghi đè lên các liên kết tệp. Tuy nhiên, OS X đi kèm với một số hiệp hội mặc định, toàn hệ thống.

Nếu bạn chạy, lsregister -dumpbạn sẽ thấy những gì Dịch vụ Khởi động gọi CoreTypesvà các hiệp hội được cung cấp bởi các ứng dụng mà nó tìm thấy.

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump

Tôi đã không quét toàn bộ đầu ra. Có thể có các nguồn khác được chỉ ra trong bãi rác đó, nhưng một số lượng lớn các loại này đến từ /System/Library/CoreServices/CoreTypes.bundle. Có thể có một tệp plaintext hoặc plist trong đó các kiểu được liệt kê. Các hiệp hội tôi tin rằng đến từ việc quét nội dung của * .app tại các vị trí ứng dụng đã biết. Đây là nơi Launch Services hiểu TextWrangler là trình chỉnh sửa cho nhiều loại tệp:

--------------------------------------------------------------------------------
bundle  id:            10928
    path:          /Applications/TextWrangler.app
    name:          TextWrangler
    identifier:    com.barebones.textwrangler (0x8000008d)
    ...
    library items:
    --------------------------------------------------------
    claim   id:            20216
        name:          TextWrangler text document
        rank:          Default
        roles:         Editor  
        flags:         relative-icon-path  
        icon:          Contents/Resources/TextWranglerTextDoc.icns
        bindings:      .a, .asm, .asp, .bashrc, .c, .c++, .cc, .cfm, .conf, .cp, .cpp, .cshrc, .css, .cxx, .equ, .f, .f77, .for, .ftn, .h, .h++, .hpp, .htm, .html, .inc, .j, .java, .js, .jsp, .log, .m, .mm, .p, .pas, .pch, .pch++, .php, .php3, .pl, .plist, .plx, .pm, .ppu, .r, .rb, .rez, .rhtml, .rss, .s, .sql, .shtm, .shtml, .tcl, .tcshrc, .text, .txt, .wml, .xhtml, .xml, .xsl, .xslt, .yaml, 'TEXT'
    ...

1
FYI -bash: lsregister: command not foundtrong Mavericks
Slipp D. Thompson

2
@ SlippD.Thndry xem xét kỹ dòng tiếp theo, đường dẫn được chỉ định ở đó.
Dmitry Ginzburg

2

Dễ như ăn bánh! Chỉ là nó không ở nơi rõ ràng nhất:

  • Nhấp chuột phải vào tệp bạn muốn thay đổi liên kết và chọn " Nhận thông tin " (hoặc chỉ cần chọn và nhấn Command+I .
  • Đi xuống " Mở bằng " (bạn có thể cần nhấp vào mũi tên bên cạnh để mở rộng nó) và chọn một chương trình khác từ hộp thả xuống.
  • Nhấp vào nút " Thay đổi tất cả ... " để thay đổi liên kết tệp này cho tất cả các tệp có cùng tiện ích mở rộng trên hệ thống của bạn.

nhập mô tả hình ảnh ở đây

Bạn cũng có thể ra ngoài và cài đặt prefpane RCDefaultApp để sửa đổi tất cả các liên kết tệp ở một nơi.


3
Bạn đã đọc câu hỏi? Đó là về nơi OS X lưu trữ thông tin, không phải cách thay đổi các hiệp hội.
Jonik

1
Vâng, nhưng biết cách thay đổi chúng cũng có ích. Giống như nó đã giúp tôi ... @joshhunt: có thể nếu bạn nói rõ rằng nội dung Get Info nằm trong Finder với tệp được chọn. (Chỉ cần hoàn tác một ứng dụng lấy các tệp của người khác - điều này có ích.)
Jonathan Leffler

@LauriRanta bạn hoàn toàn đúng, thực tế sau khi tôi đăng nó, tôi muốn xóa nó, nhưng tôi không thể tìm thấy nó!
ocodo

-3

~/Library/Preferences/com.apple.LaunchServices.plist

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.