Có thể truy vấn cơ sở dữ liệu dịch vụ khởi chạy cho các ứng dụng sẽ mở một tệp tùy ý hoặc loại UTI không?


11

Tôi có thể sử dụng mdls để hiển thị Mã nhận dạng loại thống nhất (UTI) cho một tệp tùy ý cũng như phân cấp các loại là siêu bộ của một UTI cụ thể.

mac:~ mike$ mdls -name kMDItemContentType -name kMDItemContentTypeTree foo.ksh
kMDItemContentType     = "public.ksh-script"
kMDItemContentTypeTree = (
    "public.ksh-script",
    "public.shell-script",
    "public.script",
    "public.source-code",
    "public.plain-text",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)
mac:~ mike$ mdls -name kMDItemContentType -name kMDItemContentTypeTree foo.command
kMDItemContentType     = "com.apple.terminal.shell-script"
kMDItemContentTypeTree = (
    "com.apple.terminal.shell-script",
    "public.shell-script",
    "public.script",
    "public.source-code",
    "public.plain-text",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)

Có công cụ nào có thể hiển thị Ứng dụng nào đã đăng ký cho một UTI cụ thể ngoài bản dùng thử và lỗi không?

Rõ ràng từ kiểm tra rằng foo.commandtập tin sẽ được mở bởi Terminal.app, nhưng không rõ ràng rằng foo.ksh hiện thuộc về TextEdit.app.

Tôi muốn có thể đọc trực tiếp cơ sở dữ liệu Mac OS X Launch Services mà không cần sử dụng openđể xem ứng dụng nào được chọn trên cơ sở UTI. Nó sẽ giống như có các --preview --verbosecông tắc để mở để cho tôi biết những gì sẽ làm hơn là làm nó.

Thậm chí tốt hơn sẽ là một cách để liệt kê tất cả các ứng dụng có thể mở UTI đó, ngay cả khi chúng không phải là ứng dụng ưa thích.

Để có được thông tin thứ cấp này, tôi phải tạo hoặc tìm một tệp cho từng loại sở thích và sử dụng Finder để hiển thị thủ công những ứng dụng nào có thể mở UTI đó.

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

Tôi thực sự muốn có thể truy cập dữ liệu này theo chương trình từ thiết bị đầu cuối.


Việc hoàn thành zsh có vẻ thú vị, nhưng tôi không thấy làm thế nào để có được điều đó như thiết bị xuất chuẩn. Tôi sẽ xem xét mã nguồn AppAppluggest và xem liệu nhị phân hoạt động trên Lion hay tôi có thể biên dịch nó không. Đó là một cặp khách hàng tiềm năng tuyệt vời - cảm ơn!
bmike

Câu trả lời:


6

Andrew Mortensen's duti là một CLI sẽ liệt kê những người xử lý UTI:

  • -d <uti> liệt kê trình xử lý mặc định;
  • -l <uti> liệt kê tất cả các xử lý đã đăng ký.

Xem trang người đàn ông cho duti .

EDIT: như Lri chỉ ra trong câu trả lời này , duti dường như không liệt kê tất cả các ứng dụng có thể (có thể vì nó không tính đến sự thừa kế của UTI? Đó sẽ là vấn đề cần tìm hiểu thêm). Giải pháp được đề nghị của ông, AllApllications rõ ràng sẽ là một câu trả lời tốt hơn.


Mặc dù vậy, nó thiếu một số ứng dụng sẽ được hiển thị trong menu mở.
Lri

Rất kỳ quặc. Bạn có thể cho tôi biết những gì nó đang thiếu?
kopischke

Tôi đã chỉnh sửa câu trả lời của mình trong câu hỏi khác để bao gồm đầu ra ví dụ từ duti.
Lri

Mặc dù duti được viết độc đáo, nhưng hiện tại nó sử dụng các API không dùng nữa. Tôi khuyên bạn nên xem qua developer.apple.com/l
Mugen

OK - cài đặt cái này bằng cách homebrew gõ một lần chạy về nhà. Cám ơn rất nhiều!
bmike

11

Bạn có thể sử dụng lệnh này để kiểm tra cơ sở dữ liệu dịch vụ khởi chạy. Tùy chọn -dump cung cấp cho bạn toàn bộ cơ sở dữ liệu, sau đó bạn có thể chuyển dữ liệu này thành grep và tìm kiếm bất cứ thứ gì bạn thích.

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'


Có lẽ tôi sẽ cần hỏi một câu hỏi tiếp theo về cách xử lý kết xuất này để nhổ gói ứng dụng hoặc vị trí của tệp mdimporter cụ thể để phân tích một kMDItemContentType cụ thể - nhưng điều này đã giúp ích rất nhiều. Cảm ơn bạn
bmike
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.