Setara dengan Linux untuk perintah "terbuka" Mac OS X [ditutup]

214

Saya telah menemukan perintah "terbuka" di Mac OS X sangat berguna di baris perintah. Dari "man open":

The openperintah membuka file (atau direktori atau URL), sama seperti jika Anda memiliki double-klik icon file. Jika tidak ada nama aplikasi yang ditentukan, aplikasi default yang ditentukan melalui LaunchServices digunakan untuk membuka file yang ditentukan.

Artinya, jika saya ingin membuka file PDF dengan penampil PDF default (kebetulan Preview), saya hanya perlu melakukan:

open my.pdf

Di Linux, bagaimanapun, untuk membuka file PDF dari baris perintah, saya harus menggali sekitar untuk menemukan penampil PDF default, misalnya, "evince" (siapa yang akan menebak ??), dan kemudian

evince my.pdf

Jadi, adakah yang setara dengan perintah 'terbuka' di baris perintah Linux?

Terima kasih!

Joachim Sauer
sumber
6
Mungkin pertanyaan ini harus dipindahkan ke superuser.com?
quazgar
1
Pengguna Super sepertinya tidak tepat - apakah ada StackOverflow untuk "pengguna biasa" atau mungkin "programmer yang ingin membuat skrip aplikasi lain", yaitu otomatis?
Krazy Glew
askubuntu mungkin cocok.
Gopherkhan

Jawaban:

238

Anda bisa mencoba xdg-open, sebagian besar distro Linux memilikinya. Ini akan membuka aplikasi terkait default untuk file Anda.

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

nomor 5
sumber
13
Perbedaan besar antara ini dan open, bagaimanapun, adalah bahwa ini tidak membuka file / aplikasi di latar belakang. Aplikasi Linux tampaknya sangat cerewet dan sering mengeluarkan banyak baris diagnostik dan peringatan langsung ke terminal Anda (meskipun tidak ada yang salah). Saya biasanya harus melakukan sesuatu sebagai xdg-open <file> &> /dev/null &gantinya. Apakah ada yang lebih baik dari xdg-open dalam hal ini?
Suan
13
@Suan: Itu membuka aplikasi di "latar belakang", terlepas dari terminal, dengan cara Anda dapat terus bekerja di terminal segera setelah aplikasi diluncurkan. Jadi trailing &tidak diperlukan. Adapun "beberapa jalur diagnostik", itu berasal dari aplikasi itu sendiri, bukan dari xdg-open. Jika Anda tidak menginginkan keluaran apa pun, Anda &> /dev/nullbahkan perlu menggunakan evincesecara langsung (contoh OP), sehingga keluhan Anda batal. xdg-openmemang cara untuk pergi.
MestreLion
15
@MestreLion Saya tidak berpikir keluhan sepenuhnya batal, karena Mac terbuka tidak menghasilkan keluaran aplikasi yang digemakan ke terminal.
Max Nanasy
7
@ MaxNanasy: output dari aplikasi, itu bukan xdg-opensalah jika mereka suka mengobrol. Dan menekan pesan tersebut harus menjadi pilihan pengguna , bukan xdg. Jadi itu batal mengeluh untuk meminta sesuatu yang "lebih baik" daripada xdg-open. Juga, jika Mac opentidak memiliki pilihan untuk output pesan-pesan, aku akan mengatakan bahwa openini jauh lebih buruk daripada xdg-open, karena ketika Anda menggunakan baris perintah untuk peluncuran file Anda biasanya tertarik output yang (jika tidak, mengapa tidak hanya mengklik ganda file tersebut di browser seperti Nautilus?)
MestreLion
12
@MestreLion Meskipun orang dapat menyatakan bahwa keluhannya sepele, karena alias open='xdg-open &>/dev/null'menghasilkan kira-kira perilaku yang diinginkan (meskipun kesalahan dari xdg-open sendiri (bukan hanya program yang diluncurkan) juga akan dibungkam, yang tidak diinginkan).
Max Nanasy
76

Setara yang Anda cari adalah xdg-open, yang dapat digunakan dengan cara yang sama seperti openperintah OS X. Sebagai contoh:

xdg-open ~/Documents/Chubby_Bubbies.odt

Namun, ini sangat sulit untuk diketik dengan cepat dan akurat. Sebagai gantinya, Anda harus membuat alias ke xdg-open, yang membuat prosesnya jauh lebih cepat.

Tentu saja, Anda dapat menggunakan alias openuntuk membuatnya cocok dengan OS X (Anda dapat memilih apa pun yang Anda inginkan), tetapi secara pribadi, saya menggunakan braket kotak yang tepat ( ]) untuk pintasan saya karena alasan kecepatan. Untuk menggunakan ini, tambahkan berikut ini ke .bashrcfile Anda :

alias ']'='xdg-open'

Kemudian, untuk membuka sumber daya apa pun, gunakan seperti contoh berikut:

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

Juga ini memungkinkan Anda membuka browser file (misalnya Nautilus) di direktori saat ini:

] .

Dari pengalaman saya menemukan bahwa alias satu huruf paling sesuai untuk pintasan di atas. Bagaimanapun, tujuannya adalah efisiensi. Dan Anda dapat kembali dan membuat alias yang sama di OS X - Saya meninggalkan itu sebagai latihan untuk pembaca. :-)

Jeremy Visser
sumber
26
Saya membuat alias dari 'terbuka' ke 'xdg-terbuka' agar konsisten di Linux dan Mac.
Adam Byrtek
Bagus tapi tidak bagus, saya mencoba membuka file .url dan membukanya di gedit.
sorin
18
@ Atau Apakah Anda mencoba membuatnya seolah-olah itu salah saya ?!
Jeremy Visser
7
@sorin: xdg-openmembuka aplikasi default sistem Anda untuk file tersebut. Dalam kasus Anda, .urlfile diatur untuk dibuka di gedit. Jika Anda ingin mengubahnya, klik kanan file di Nautilus dan pergi ke Properties> Open With untuk mengubah aplikasi default, dan xdg-openakan bekerja sesuai itu.
MestreLion
Berikut adalah Intisari yang saya buat, cukup salin dan tempel perintah di bawah bagian 'Keseluruhan' di komentar pertama.
ozanmuyes
14

Saya hanya memilah ini sendiri jadi saya pikir saya akan menuliskan bagaimana saya melakukannya, yang secara spesifik relevan dengan apa yang Suan minta. Langkah-langkah ini memungkinkan Anda cukup mengetik "terbuka" dan terminal Anda tidak tercakup dalam pesan yang tidak Anda butuhkan:

Buat script yang disebut opendi ~/bin, konten ini hanya:

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

Simpan dan tutup skrip, lalu ketikkan "source .profile" (atau .bash_profile jika relevan). Karena itu, ketikkan "open Music" akan membuka folder musik Anda di GUI nautilus dan tidak boleh memasukkan apa pun ke terminal Anda.

Anake
sumber
Ada apa dengan alias dan lokasi aneh? Panggil saja skrip itu sendiri opendan letakkan di PATH Anda (biasanya dalam $HOME/bin/open)
tripleee
Di komputer saya (ubuntu 11.10) jika Anda menambahkan skrip yang disebut 'buka' ke jalur Anda, dan coba lakukan dengan cara yang ditumpangi oleh / bin / open. Jadi saya tidak bisa menemukan cara agar Anda bisa bekerja tanpa alias.
Anake
Caranya adalah dengan memiliki skrip Anda sendiri di direktori yang datang lebih awal PATHdari Anda /bin. Dengan konvensi, jika Anda memilikinya $HOME/binakan ditambahkan ke awal PATH, sebelum direktori sistem apa pun. Biasanya, ini dilakukan oleh Anda .profileatau yang sejenis. Sebagai contoh, default .profilepada Ubuntu melakukan hal ini.
tripleee
2
Mengarahkan output ke /dev/nullagak berubah-ubah; mungkin Anda dapat mengalihkan output ke $HOME/.xsession-errorsatau semacamnya, sehingga diagnostik tidak sepenuhnya hilang jika Anda perlu memecahkan masalah sesuatu.
tripleee
1
@efdee: mengutip semua variabel dengan benar adalah praktik pemrograman yang baik, dan sangat penting dalam skrip bash. Ini tidak ada hubungannya dengan xdg-open, ini adalah masalah shell.
MestreLion
11

Secara tradisional, Anda dapat menggunakan perintah "lihat". Yang hanya menggunakan run-mailcap. Ini akan bekerja tanpa Gnome dan X dll.

man see
Ali Afshar
sumber
3
Masalahnya adalah run-mailcap(dan banyak aliasnya) menggunakan basis data asosiasi aplikasi yang terpisah (dan sangat ketinggalan zaman). Misalnya di sistem saya, ketika .mp3lagu dibuka dengan benar di VLC, .txtfile dibuka kurang (bukan gedit) dan .pdffile gagal dibuka! (Kesalahan: tidak ada "lihat" aturan penyimpanan surat ditemukan untuk tipe "application / pdf")
MestreLion
Seperti yang saya katakan, itu tergantung pada masing-masing sistem. Beberapa aplikasi mendaftar sendiri dengan cara run-mailcapmengenalinya. xdg-openinternal menggunakan gvfs-open(pada sistem Gnome seperti Ubuntu), yang pada gilirannya menggunakan spesifikasi mime-database xdg, yang jauh lebih banyak menggunakan aplikasi.
MestreLion
Membuka PDF lebih dari 50 halaman gimpuntuk saya. Saya akan tetap dengan xdg-open.
user1717828
Membuka file txt di lessx''D
Timo
4

buka gnome

Ana Betts
sumber
7
gnome-open sekarang sudah tidak digunakan lagi, dan selain itu sudah digunakan secara internal oleh xdg-openjika pengguna menggunakan Gnome (sekarang menggunakan gvfs-open)
MestreLion
2

Jika Anda memiliki pengaturan pantomim dengan benar, Anda dapat menggunakan mimeopen. Lihat halaman manualnya, karena memiliki beberapa opsi yang berguna.

stacksia
sumber
1
Alangkah baiknya jika jawaban ini diperluas. Saya tertarik untuk melihat bagaimana ini bekerja
Magnus
-3

Di bawah lingkungan Gnome Desktop, saya menggunakan perintah berikut:

nautilus `pwd` &

Ini mirip dengan "terbuka." perintah di Mac

WonderLi
sumber
11
Jawaban ini memiliki beberapa masalah: A) Ini membuka direktori saat ini, bukan file, seperti yang diminta pengguna. B) Anda dapat menggunakan .bukan " pwd" C) jika Anda mengubah pwdfile, pengguna akan masih perlu menekan ENTER setelah Nautilus membuka D) nautilus Pembukaan pertama hanya untuk itu untuk membuka file adalah solusi yang sangat tidak langsung.
MestreLion