Linux เทียบเท่ากับคำสั่ง“ open” ของ Mac OS X [ปิด]


214

ฉันพบคำสั่ง "open" ใน Mac OS X มีประโยชน์มากในบรรทัดคำสั่ง จาก "man open":

openคำสั่งเปิดแฟ้ม (หรือไดเรกทอรีหรือ URL) เช่นเดียวกับถ้าคุณมีดับเบิลคลิกที่ไอคอนของไฟล์ หากไม่ได้ระบุชื่อแอปพลิเคชันแอปพลิเคชันเริ่มต้นตามที่กำหนดผ่านทาง LaunchServices จะถูกใช้เพื่อเปิดไฟล์ที่ระบุ

นั่นคือถ้าฉันต้องการเปิดไฟล์ PDF ด้วยโปรแกรมดู PDF ที่เป็นค่าเริ่มต้น (เกิดขึ้นเป็นหน้าตัวอย่าง) ฉันต้องทำเท่านั้น:

open my.pdf

อย่างไรก็ตามใน Linux เมื่อต้องการเปิดไฟล์ PDF จากบรรทัดคำสั่งฉันต้องขุดไปเรื่อย ๆ เพื่อค้นหาตัวแสดง PDF ที่เป็นค่าเริ่มต้นเช่น "evince" (ผู้ที่เดาได้หรือไม่?) จากนั้น

evince my.pdf

ดังนั้นจะมีคำสั่ง 'open' ที่เทียบเท่าได้ง่ายในบรรทัดคำสั่ง Linux หรือไม่

ขอบคุณ!


6
บางทีคำถามนี้ควรถูกย้ายไปยัง superuser.com หรือไม่
quazgar

1
ผู้ใช้ขั้นสูงดูเหมือนว่าไม่เหมาะสม - มี StackOverflow สำหรับ "ผู้ใช้ทั่วไป" หรืออาจเป็น "โปรแกรมเมอร์ที่ต้องการเขียนสคริปต์แอปพลิเคชันอื่น" เช่นอัตโนมัติ
Krazy Glew

askubuntu อาจพอดี
Gopherkhan

คำตอบ:


238

คุณสามารถลองxdg-open, distros Linux ส่วนใหญ่มี มันจะเปิดแอพเริ่มต้นที่เชื่อมโยงกับไฟล์ของคุณ

FYI https://portland.freedesktop.org/doc/xdg-open.html


13
ความแตกต่างอย่างมากระหว่างสิ่งนี้กับสิ่งนี้openคือสิ่งนี้ไม่ได้เปิดไฟล์ / แอพในพื้นหลัง แอปพลิเคชัน Linux ดูเหมือนจะช่างพูดมากและมักจะแสดงผลการวินิจฉัยและคำเตือนหลายบรรทัดในเทอร์มินัลของคุณ (แม้ว่าจะไม่มีอะไรผิดปกติ) ฉันมักจะต้องทำสิ่งที่ชอบxdg-open <file> &> /dev/null &แทน มีอะไรดีกว่า xdg-open ในเรื่องนี้หรือไม่?
Suan

13
@Suan: มันจะเปิดแอปใน "background" ซึ่งแยกออกจากเทอร์มินัลในแบบที่คุณอาจทำงานต่อในเทอร์มินัลทันทีที่เปิดตัวแอป ดังนั้นการลาก &ไม่จำเป็น สำหรับ "หลายบรรทัดวินิจฉัย" xdg-openเหล่านั้นจากการตรวจสอบของตัวเองไม่ได้มาจาก หากคุณไม่ต้องการเอาท์พุทคุณจะต้อง&> /dev/nullใช้evinceโดยตรง (ตัวอย่างของ OP) ดังนั้นการบ่นของคุณจึงเป็นโมฆะ xdg-openเป็นวิธีที่จะไปแน่นอน
MestreLion

15
@MestreLion ฉันไม่คิดว่าการร้องเรียนจะเป็นโมฆะทั้งหมดเนื่องจากการเปิดของ Mac ไม่ได้ส่งผลให้แอปพลิเคชั่นถูกสะท้อนไปยังเทอร์มินัล
Max Nanasy

7
@ MaxNanasy: เอาท์พุทมาจากแอพพลิเคชั่นไม่ใช่xdg-openความผิดถ้ามันช่างพูด และการระงับข้อความดังกล่าวควรเป็นทางเลือกของผู้ใช้ไม่ใช่ของ xdg ดังนั้นจึงเป็นโมฆะบ่นเพื่อขอสิ่งที่ "ดี" xdg-openกว่า นอกจากนี้หาก Mac openไม่มีตัวเลือกในการส่งข้อความเหล่านั้นฉันจะบอกว่าopenมันแย่กว่าxdg-openมากเพราะเมื่อคุณใช้บรรทัดคำสั่งเพื่อเปิดไฟล์คุณมักจะสนใจในผลลัพธ์นั้น (มิฉะนั้นทำไมไม่เพียงแค่ดับเบิลคลิกไฟล์ ในเบราว์เซอร์เช่น Nautilus หรือไม่)
MestreLion

12
@MestreLion แม้ว่าอาจทำให้กรณีที่การร้องเรียนเป็นเรื่องเล็กน้อยเนื่องจากมีalias open='xdg-open &>/dev/null'ค่าประมาณพฤติกรรมที่ต้องการ (แม้ว่าข้อผิดพลาดจาก xdg-open เอง (เมื่อเทียบกับโปรแกรมที่เปิดตัว) ก็จะถูกระงับซึ่งเป็นสิ่งที่ไม่พึงประสงค์)
Max Nanasy

76

สิ่งที่คุณกำลังมองหาคือสิ่งที่เทียบเท่าxdg-openซึ่งสามารถใช้ในลักษณะเดียวกับopenคำสั่งของ OS X ตัวอย่างเช่น:

xdg-open ~/Documents/Chubby_Bubbies.odt

อย่างไรก็ตามมันยากที่จะพิมพ์อย่างรวดเร็วและแม่นยำ แต่คุณควรสร้างนามแฝงเป็น xdg-open ซึ่งทำให้กระบวนการเร็วขึ้น

แน่นอนคุณสามารถใช้นามแฝงopenเพื่อให้ตรงกับ OS X (คุณสามารถเลือกสิ่งที่คุณต้องการ) แต่โดยส่วนตัวแล้วฉันใช้วงเล็บเหลี่ยมด้านขวา ( ]) สำหรับทางลัดของฉันเพื่อเหตุผลด้านความเร็ว หากต้องการใช้สิ่งนี้ให้เพิ่มสิ่งต่อไปนี้ใน.bashrcไฟล์ของคุณ:

alias ']'='xdg-open'

จากนั้นเมื่อต้องการเปิดทรัพยากรใด ๆ ให้ใช้เหมือนตัวอย่างใด ๆ ต่อไปนี้:

] www.google.com
] file.txt
] ~/Pictures
] ssh://myserver.local/home/jeremy

นอกจากนี้ยังช่วยให้คุณเปิดเบราว์เซอร์ไฟล์ (เช่น Nautilus) ในไดเรกทอรีปัจจุบัน:

] .

จากประสบการณ์ฉันพบว่านามแฝงตัวอักษรเดียวทำงานได้ดีที่สุดสำหรับทางลัดด้านบน ท้ายที่สุดเป้าหมายคือประสิทธิภาพ และคุณสามารถย้อนกลับและสร้างนามแฝงเดียวกันบน OS X - ฉันปล่อยให้มันเป็นแบบฝึกหัดให้กับผู้อ่าน :-)


26
ฉันสร้างนามแฝงจาก 'open' ถึง 'xdg-open' เพื่อให้สอดคล้องกับทั้ง Linux และ Mac
Adam Byrtek

นั่นเป็นสิ่งที่ดี แต่ไม่ดีฉันพยายามเปิดไฟล์. url และเปิดมันด้วย gedit
โซริน

18
@ โซรินคุณพยายามที่จะทำให้ดูเหมือนเป็นความผิดของฉันหรือไม่!
Jeremy Visser

7
@sorin: xdg-openเปิดแอปพลิเคชันเริ่มต้นของระบบสำหรับไฟล์ ในกรณีของคุณ.urlไฟล์ถูกตั้งค่าให้เปิดใน gedit หากคุณต้องการเปลี่ยนให้คลิกขวาที่ไฟล์ใน Nautilus และไปที่คุณสมบัติ> เปิดด้วยเพื่อเปลี่ยนแอปพลิเคชันเริ่มต้นและxdg-openจะทำงานตามนั้น
MestreLion

นี่คือส่วนสำคัญที่ฉันได้ทำเพียงคัดลอกและวางคำสั่งภายใต้หัวข้อ 'ทั้งหมด' ในความคิดเห็นแรก
ozanmuyes

14

ฉันเพิ่งเรียงลำดับตัวเองออกมาดังนั้นฉันจึงคิดว่าฉันจะเขียนว่าฉันทำได้อย่างไรซึ่งเกี่ยวข้องกับสิ่งที่สวนถาม ขั้นตอนเหล่านี้ช่วยให้คุณพิมพ์ "open" และไม่ใช่เทอร์มินัลของคุณที่ครอบคลุมในข้อความที่คุณไม่ต้องการ:

สร้างสคริปต์ที่เรียกว่าopenใน~/binเนื้อหาที่เป็นเพียงแค่:

xdg-open "$1" &> /dev/null &

บันทึกและปิดสคริปต์จากนั้นพิมพ์ "source .profile" (หรือ. bash_profile หากเกี่ยวข้อง) ถ้าอย่างนั้นการพิมพ์ "open Music" จะเปิดโฟลเดอร์เพลงของคุณใน nautilus GUI และไม่ควรใส่อะไรลงในเครื่องเทอร์มินัลของคุณ


อะไรคือนามแฝงและสถานที่แปลก ๆ ? เพียงแค่เรียกใช้สคริปต์openและวางไว้ใน PATH ของคุณ (ตามปกติ$HOME/bin/open)
tripleee

บนเครื่องของฉัน (อูบุนตู 11.10) หากคุณเพิ่มสคริปต์ชื่อ 'เปิด' ลงในพา ธ ของคุณและลองทำเช่นนั้นมันจะถูกแทนที่ด้วย / bin / open ดังนั้นฉันจึงไม่สามารถหาวิธีที่จะทำให้วิธีการทำงานของคุณไม่มีนามแฝง
Anake

เคล็ดลับคือการมีสคริปต์ของคุณเองในไดเรกทอรีที่มาก่อนหน้านี้ในของคุณมากกว่าPATH /binตามแบบแผนถ้าคุณมี$HOME/binมันจะถูกเพิ่มไปยังจุดเริ่มต้นของ PATH ก่อนไดเรกทอรีระบบใด ๆ โดยทั่วไปสิ่งนี้จะทำโดยคุณ.profileหรือคล้ายกัน ตัวอย่างเช่นค่าเริ่มต้น.profileบน Ubuntu ทำสิ่งนี้ทุกประการ
tripleee

2
การเปลี่ยนทิศทางเอาต์พุตไป/dev/nullเป็นบิตไม่แน่นอน บางทีคุณสามารถเปลี่ยนเส้นทางไปยัง$HOME/.xsession-errorsหรือบางส่วนเพื่อให้การวินิจฉัยไม่หายไปอย่างสมบูรณ์ในกรณีที่คุณต้องการแก้ไขปัญหาบางอย่าง
tripleee

1
@efdee: การอ้างอิงตัวแปรทั้งหมดอย่างถูกต้องเป็นวิธีการเขียนโปรแกรมที่ดีและมีความสำคัญในสคริปต์ทุบตี สิ่งนี้ไม่เกี่ยวกับxdg-openนี่เป็นปัญหาของเชลล์
MestreLion

11

ตามเนื้อผ้าคุณสามารถใช้คำสั่ง "ดู" ซึ่งเพิ่งใช้ run-mailcap สิ่งนี้จะทำงานโดยไม่มี Gnome และ X เป็นต้น

man see

3
ปัญหาคือrun-mailcap(และนามแฝงจำนวนมาก) ใช้ฐานข้อมูลการเชื่อมโยงแอปที่แยกกัน (และล้าสมัยมาก) ตัวอย่างเช่นในระบบของฉันในขณะที่.mp3เพลงเปิดอย่างถูกต้องใน VLC .txtไฟล์ที่เปิดในน้อยกว่า (แทนที่จะเป็น gedit) และ.pdfไฟล์ก็ไม่สามารถเปิดได้! (ข้อผิดพลาด: ไม่พบกฎ mailcap "ดู" สำหรับประเภท "application / pdf")
MestreLion

อย่างที่ฉันพูดมันขึ้นอยู่กับแต่ละระบบ มีแอพพลิเคชั่นเพียงไม่กี่ตัวที่จะrun-mailcapจดจำตัวเองได้ xdg-openใช้ภายในgvfs-open(บนระบบ Gnome เช่น Ubuntu) ซึ่งจะใช้ข้อมูลจำเพาะฐานข้อมูล mime ของ xdg ซึ่งมีแอปพลิเคชันที่ใช้งานมากขึ้น
MestreLion

เปิด PDF ใน 50+ หน้าgimpสำหรับฉัน xdg-openฉันจะติดกับ
user1717828

การเปิดไฟล์ txt ในlessx''D
Timo

4

gnome-เปิด


7
gnome-open ถูกเลิกใช้แล้วและนอกจากนั้นมันถูกใช้แล้วภายในโดยxdg-openหากผู้ใช้อยู่ใน Gnome (ตอนนี้ใช้gvfs-open)
MestreLion

2

mimeopenหากคุณมีการติดตั้งใบ้ถูกต้องแล้วคุณสามารถใช้ ลองดูหน้า man ของมันเพราะมันมีตัวเลือกที่มีประโยชน์


1
มันคงจะดีถ้าคำตอบนี้ขยายออกไป ฉันสนใจที่จะดูวิธีการทำงานของมัน
Magnus

-3

ภายใต้สภาพแวดล้อม Gnome Desktop ฉันใช้คำสั่งต่อไปนี้:

nautilus `pwd` &

สิ่งนี้คล้ายกับ "เปิด" คำสั่งใน Mac


11
คำตอบนี้มีปัญหาหลายประการ: ก) มันจะเปิดไดเรกทอรีปัจจุบันไม่ใช่ไฟล์ตามที่ผู้ใช้ร้องขอ B) คุณสามารถใช้.แทน " pwdC") ถ้าคุณเปลี่ยนpwdไฟล์ผู้ใช้จะยังคงต้องตี ENTER หลังจาก Nautilus เปิด D) หอยโข่งเปิดครั้งแรกเพียงเพื่อความมันในการเปิดไฟล์เป็นวิธีการแก้ปัญหาทางอ้อมมาก
MestreLion
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.