วิธีการเปิดแอปพลิเคชันเฉพาะเช่น macOS `open -a`?


14

ใน macOS ในการเริ่มต้นใช้งาน Terminal bashฉันสามารถพิมพ์:

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

เพื่อเปิด URL ด้วย Firefox หรือเบราว์เซอร์อื่น นอกจากนี้ยังทำงานเพื่อเปิดโปรแกรมเช่นและเปิดไฟล์ในโปรแกรมเริ่มต้นเช่นopen -a mapsopen file.pdf

ฉันจะทำเช่นเดียวกันกับ Ubuntu ในเทอร์มินัล GNOME ปริยายที่ใช้งานอยู่ได้bashอย่างไร ฉันรู้ว่าฉันสามารถเปิดไฟล์หรือ URL ด้วยและฉันสามารถเปิดเบราว์เซอร์เริ่มต้นด้วยxdg-open /path/to/file sensible-browserUbuntu มีคำสั่งทั่วไปในการเปิดไฟล์แอพพลิเคชั่นหรือไฟล์ในแอพพลิเคชั่นที่เฉพาะเจาะจงหรือไม่?

ฉันกำลังทำงานbashกับทั้งสองเครื่อง3.2.57(1)-releaseใน macOS และ4.4.19(1)-releaseบน Ubuntu


ฉันไม่เคยใช้เครื่อง Mac เพื่อให้คุณสามารถบอกฉันว่าทำไมคุณควรใช้open -a Firefox http://www.wikipedia.org? ทำfirefox http://www.wikipedia.orgไม่ได้เหรอ ดูเหมือนว่าจะเป็นคุณสมบัติที่ไร้ประโยชน์openเมื่อเปิดโปรแกรมเป็นจุดbashสำคัญ
JoL

1
ทุบตีบน MacOS bash: firefox: command not foundทำงานแตกต่างกันเช่นคำสั่งของคุณจะช่วยให้ข้อผิดพลาด ข้อผิดพลาดเดียวกันกับFirefoxชื่อโปรแกรม
miguelmorin

3
bashทำงานเหมือนกันทุกประการ มันคือ Firefox ที่ติดตั้งแตกต่างไปจาก Ubuntu บน macOS ตัวอย่างเช่นคุณสามารถเรียกใช้/Applications/Firefox.app/Contents/MacOS/firefox-binจากบรรทัดคำสั่ง Firefox.appเป็นชนิดพิเศษของโฟลเดอร์ที่มีไม่ได้เป็นเพียงปฏิบัติการ แต่ไฟล์ที่อยู่ในลินุกซ์อาจจะกระจัดกระจายในหลาย ๆ ด้าน/usr/bin/, /usr/lib, /etcฯลฯ ไดเรกทอรี Firefox.appการค้นหารู้วิธีการเรียกใช้แอพลิเคชันที่เกิดขึ้นจริงเมื่อคุณตัวอย่างเช่นดับเบิลคลิกที่ openเป็นวิธีการ "เรียกใช้" โฟลเดอร์พิเศษจากบรรทัดคำสั่ง
chepner

4
ไม่ใช่ว่าbashทำงานแตกต่างกัน: ติดตั้ง firefox เป็นแอปพลิเคชัน OS X ( Firefox.app) และไม่ได้อยู่ใน PATH ปกติ อีกเหตุผลที่ควรใช้open -aคือติดตั้งแอปพลิเคชันที่เปิดใช้งานอย่างเหมาะสมแทนที่จะรอจนกว่าจะออก
alexis

คำตอบ:


10

คุณสามารถใช้ชื่อโปรแกรมที่คุณต้องการเป็นพิเศษ (หากสามารถใช้เป็นเครื่องมือบรรทัดคำสั่งได้)

ตัวอย่างเช่น URL:

firefox duckduckgo.com
chromium-browser askubuntu.com

ไฟล์ PDF:

evince foo.pdf
okular bar.pdf

รูปภาพ:

gpicview foo.png
feh bar.jpeg

ตำรา:

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

วิดีโอ / เพลง:

mpv  foo.mp3
vlc  bar.mp4

หากคุณต้องการให้โปรแกรมที่จะเรียกใช้ออกจาก terminal แล้วนี่คือวิธีที่ฉันชอบทำ:

nohup program args &

ตัวอย่างเช่น:

nohup firefox askubuntu.com &

จำไว้ว่าคุณสามารถเปลี่ยนเส้นทางผลลัพธ์ได้ตามปกติเช่น:

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

2
eog picture.jpgสำหรับรูปภาพเช่นกันหากคุณติดตั้ง gnome-desktop :)
Videonauth

1
@Videonauth ใช่หรือชนิดอื่น ๆ ของเครื่องมือ;)
Ravexina

2
@BaptisteCandellier ฉันไม่ได้รับจุดของการโทรopenเพื่อเรียกโปรแกรมอื่น ทำไมไม่เรียกโปรแกรมอื่นโดยตรง มีประโยชน์อะไรopenเพิ่ม? คำตอบนี้สะท้อนถึงสิ่งที่เป็นธรรมชาติที่ต้องทำเพื่อเปิดแอปพลิเคชันเฉพาะ
JoL

1
@BististeCandellier ฉันเห็นด้วยและopenใน macOS ทำงานได้ทั้งการเปิดไฟล์และโฟลเดอร์ในแอปพลิเคชันเริ่มต้นและในแอปพลิเคชันเฉพาะ ดูเหมือนว่าต้นฉบับbashจะอยู่ในเส้นทางที่แตกต่างกันxdg-openสำหรับไฟล์และชื่อแอปพลิเคชันสำหรับส่วนที่เหลือ
miguelmorin

2
อีกสิ่งหนึ่งที่แตกต่างกันopenใน MacOS ก็คือมันเปิดตัวแอปพลิเคชั่นที่แยกออกจากคอนโซลที่ใช้งานนั่นคือถ้าหากปิดคอนโซลแอปจะยังคงทำงานต่อไป ใน Ubuntu หนึ่งต้องใช้nohupคำสั่งเพื่อให้ได้พฤติกรรมเดียวกัน (เนื่องจากคำนำหน้าแต่ละคำสั่งด้วย nohup และการเปลี่ยนเส้นทางผลลัพธ์สำหรับแต่ละคำสั่งที่คุณเรียกใช้นั้นอาจทำให้เหนื่อยยากขึ้นมันอาจสมเหตุสมผลกว่าที่จะกำหนดทางลัดที่กำหนดเอง)
undercat ปรบมือ Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.