Làm cách nào để mở một ứng dụng cụ thể như macOS `open -a`?


14

Trên macOS trong Terminal mặc định đang chạy bash, tôi có thể gõ:

open -a Firefox http://www.wikipedia.org

để mở URL bằng Firefox hoặc trình duyệt khác. Nó cũng hoạt động để khởi chạy một chương trình, ví dụ open -a maps, và để mở một tệp trong chương trình mặc định, vd open file.pdf.

Làm cách nào tôi có thể làm tương tự trên Ubuntu trong Terminal Gnome mặc định cũng đang chạy bash? Tôi biết rằng tôi có thể mở tệp hoặc URL xdg-open /path/to/filevà tôi có thể mở trình duyệt mặc định bằng sensible-browser. Ubuntu có một lệnh chung để mở tệp, ứng dụng hoặc tệp trong các ứng dụng cụ thể không?

Tôi đang chạy bashtrên cả hai máy, 3.2.57(1)-releasetrên macOS và 4.4.19(1)-releasetrên Ubuntu.


Tôi chưa bao giờ sử dụng máy Mac, vậy bạn có thể cho tôi biết lý do bạn sử dụng open -a Firefox http://www.wikipedia.orgkhông? Bạn không thể làm gì firefox http://www.wikipedia.org? Có vẻ như một tính năng vô dụng của open, khi mở chương trình là điểm chính của bash.
JoL

1
Bash trên macOS hoạt động khác nhau, ví dụ lệnh của bạn đưa ra lỗi bash: firefox: command not found. Cùng một lỗi với Firefoxtên chương trình.
Miguelmorin

3
bashhoạt động giống hệt nhau; Firefox được cài đặt khác với Ubuntu. Trên macOS, ví dụ, bạn có thể chạy /Applications/Firefox.app/Contents/MacOS/firefox-bintừ dòng lệnh. Firefox.applà một loại đặc biệt của thư mục đó không chỉ chứa các thực thi, nhưng file trong Linux có thể được phân tán về trong khác nhau /usr/bin/, /usr/lib, /etcvv thư mục. Trình tìm kiếm biết cách chạy ứng dụng thực tế khi bạn nhấp chuột vào Firefox.app. openlà một cách để "chạy" thư mục đặc biệt từ dòng lệnh.
chepner

4
Nó không bashhoạt động khác: firefox được cài đặt dưới dạng ứng dụng OS X ( Firefox.app) và không có trên PATH thông thường. Một lý do khác để sử dụng open -alà nó chạy đúng ứng dụng mà nó khởi chạy, thay vì chờ đợi cho đến khi nó thoát.
alexis

Câu trả lời:


10

Bạn có thể đặc biệt sử dụng tên chương trình mong muốn của mình (nếu nó có thể được sử dụng làm công cụ dòng lệnh).

Ví dụ: url:

firefox duckduckgo.com
chromium-browser askubuntu.com

PDF:

evince foo.pdf
okular bar.pdf

Hình ảnh:

gpicview foo.png
feh bar.jpeg

Các văn bản:

gedit foo.txt
mousepad /etc/config
leafpad bar.xml

Video / Âm nhạc:

mpv  foo.mp3
vlc  bar.mp4

Nếu bạn muốn chương trình được chạy tách rời khỏi thiết bị đầu cuối thì đây là cách tôi thích làm hơn:

nohup program args &

Ví dụ:

nohup firefox askubuntu.com &

Hãy nhớ rằng bạn luôn có thể chuyển hướng đầu ra như bình thường, ví dụ:

nohup firefox duckduckgo.com &> /dev/null &

2
eog picture.jpgcũng cho hình ảnh nếu bạn đã cài đặt máy tính để bàn gnome :)
Videonauth

1
@Videonauth Vâng, hoặc bất kỳ loại công cụ nào khác;)
Ravexina

2
@BaptisteCand Bark Tôi không có ý định gọi openđể gọi một chương trình khác. Tại sao không gọi trực tiếp chương trình khác? Những gì hữu ích không openthêm? Câu trả lời này phản ánh điều tự nhiên phải làm để mở các ứng dụng cụ thể.
JoL

1
@BaptisteCand Bark Tôi đồng ý và opentrên macOS hoạt động cả để mở tệp và thư mục trong ứng dụng mặc định và trong các ứng dụng cụ thể. Có vẻ như bản gốc bashđã đi trên một con đường khác với xdg-opencác tệp và tên ứng dụng cho phần còn lại.
Miguelmorin

2
Một điều khác biệt openở MacOS là nó khởi chạy ứng dụng tách ra khỏi bảng điều khiển mà nó chạy từ đó, tức là nếu giao diện điều khiển đóng, ứng dụng sẽ tiếp tục. Trên Ubuntu người ta cần sử dụng nohuplệnh để có hành vi tương tự. (vì tiền tố mỗi lệnh với nohup và đầu ra chuyển hướng cho mỗi lệnh bạn chạy trở nên mệt mỏi, nên có thể có ý nghĩa hơn để xác định một phím tắt tùy chỉnh)
undercat hoan nghênh Monica
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.