OSX 'mở với' bash script


8

Tôi đã có một tập lệnh bash, thực tế có rất nhiều trong số chúng, mà tôi muốn có thể mở các tệp trong công cụ tìm của OSX.

Đó là một khái niệm thực sự, thực sự đơn giản nhưng vì một số lý do, các tập lệnh bash bị mờ đi trong hộp thoại 'open with' của trình tìm kiếm.

Tôi tập hợp rằng có nhiều cách khác nhau để sử dụng applescript hoặc đóng gói như một ứng dụng ... nhưng tôi đã không thể tìm ra bất kỳ thứ gì trong số này và tôi thực sự không muốn phải chọn một ngôn ngữ khác chỉ cho nhiệm vụ tầm thường này - ai đó có thể cho tôi ăn làm thế nào để làm điều này?

Cảm ơn!

Câu trả lời:


11

Điều đó là không thể. Dịch vụ khởi chạy hoạt động với các định danh ứng dụng và các tập lệnh bash không có chúng.

Bạn cần tạo một ứng dụng trình bao bọc bằng Automator.

  1. Khởi động máy tự động
  2. Chọn ứng dụng
  3. Tìm kiếm hành động Run Shell Script và thêm nó vào bên phải.
  4. Truyền đầu vào dưới dạng đối số
  5. Đặt kịch bản của bạn vào đó
  6. Lưu ở đâu đó

Đây là phiên bản của tôi, sử dụng tiện ích dòng lệnh Growl :

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

Kết quả:

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


Bạn có thể thấy hiệu ứng của thay đổi này ~/Library/Preferences/com.apple.LaunchServices.plistkhi bạn Thay đổi Tất cả :

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

("Kiểm tra" là tên tôi đã đặt cho ứng dụng Automator của mình)


Cảm ơn. Tôi đã cho nó một vòng xoáy nhưng tôi đã thử và mở bằng ứng dụng được tạo bởi Automator, nó chỉ nói Hành động "Run Shell Script" đã gặp lỗi. Kiểm tra thuộc tính của hành động và thử chạy lại quy trình công việc. Đó là về thông báo lỗi ít hữu ích nhất mà tôi đã thấy trong một thời gian!
giàu

@Rich Nó có hoạt động với tập lệnh mặc định trong hành động kịch bản shell shell không? Hay thậm chí là không? Bạn có nhớ để thay đổi sở thích đầu vào vượt qua ? Bạn có thử bấm đúp vào ứng dụng của mình, kéo tệp vào ứng dụng của mình hoặc chỉ mở tệp được liên kết không? Điều gì xảy ra nếu bạn bắt đầu nó theo những cách khác?
Daniel Beck

Cảm ơn. Không chắc chắn làm thế nào bạn thấy đầu ra từ mặc định vì nó chỉ gọi mèo, nhưng có vẻ như đó không phải là lỗi. Thay vì ứng dụng gọi tập lệnh của tôi từ một vị trí không chuẩn, tôi đã tạo tập lệnh trong / usr / local / bin và sau đó phát hiện ra rằng nếu tôi cố chạy nó, nó đã phàn nàn rằng có quá nhiều cấp độ liên kết tượng trưng (1?! ) Vì vậy, tôi đã sao chép tập lệnh ở đó và nó dường như hoạt động. Cảm ơn!
giàu

1

Tôi đã làm theo hướng dẫn của Daniel Beck với một vài sửa đổi và làm cho nó hoạt động với các tệp URL mà tôi muốn mở trong Chrome (Firefox cũng sẽ hoạt động) trên máy Mac.

Kịch bản tôi đã sử dụng là:

sed 's/^URL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | tr -d '\r' | xargs open -a "Google Chrome"

Điều này phân tích cú pháp URL = dòng từ một tệp URL điển hình trông giống như:

[InternetShortcut]
URL=http://www.docircuits.com/pricing
IDList=
HotKey=0
IconFile=O:\Apps\Firefox\Data\profile\shortcutCache\4t0JW4mY1qRPhiYz1fY3dw==.ico
IconIndex=0

Lưu tập lệnh Automator ở đâu đó như thư mục ~ / Library của bạn. Tôi gọi tôi là OpenUrl.app.

Bây giờ đi đến một tệp url ở đâu đó và mở cửa sổ bật lên "Nhận thông tin". Thay đổi lệnh Open With thành tập lệnh OpenUrl.app của bạn. Kiểm tra chỉ bằng một hoặc nhấp vào "Thay đổi tất cả ..." Lần đầu tiên tôi nhấp vào, nó đã báo lỗi, nhưng dường như hoạt động lần thứ hai.

Khi phát triển điều này, tôi đã gặp phải lỗi "Run Shell Script", nhưng đó là do lỗi thực tế trong tập lệnh. Tôi nghĩ vấn đề chính với kịch bản của Daniel là nó không xử lý khoảng trắng trong tên tệp bạn cố mở.


-1

Sử dụng reattach-to-user-namespace, từ repo hoặc với brew install reattach-to-user-namespace. Điều này hoạt động ở Sierra, tôi không chắc chắn về các hệ điều hành khác.

Sau khi cài đặt, sử dụng nó trong tập lệnh bash như vậy:

không gian tên reattach-to-user mở a_cool_file.png


Điều này dường như không trả lời câu hỏi. OP muốn sử dụng chức năng "Mở bằng" của Trình tìm kiếm để mở tệp bằng tập lệnh Bash. Cung cấp hỗ trợ clipboard trong Tmux và Màn hình không giúp ích gì cho điều đó, đặc biệt là vì không có dấu hiệu nào cho thấy Tmux hoặc Màn hình thậm chí có liên quan.
8bittree
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.