Mengapa saya tidak bisa menjalankan perintah ini di terminal saya:
open index.html
Bukankah seharusnya membuka file ini di browser saya? Juga saya tidak bisa menjalankan perintah ini: open index.html -a "Sublime Text"
. Hasil dari perintah ini adalah:
$ open index.html
Couldn't get a file descriptor referring to the console
$ open index.html -a "Sublime Text" -
open: invalid option -- 'a'
Usage: open [OPTIONS] -- command
command-line
file-opening
Edgar Oliveira
sumber
sumber
xdg-open
yang harus membuka file di browser Anda. Theopen
perintah link keopenvt
komando dan membuka biner dalam konsol virtual baru. Tampaknya bukan itu yang Anda inginkan.open
perintah di Linux.open
perintah di Linux, yang ditautkan keopenvt
; pesan kesalahan dalam pertanyaan konsisten dengan situasi itu.xdg-open <file>
dan itu harus membuka file dengan program yang sesuai.Jawaban:
Tujuan utama
open
perintah OS X adalah untuk membuka file di aplikasi terkait. Setara dengan itu pada unix non-OSX modern adalahxdg-open
.xdg-open
tidak memiliki yang setara dengan OSXopen -a
untuk membuka file di aplikasi tertentu. Itu karena cara normal untuk membuka file dalam aplikasi adalah dengan mengetikkan nama aplikasi diikuti dengan nama file. Lebih tepatnya, Anda perlu mengetikkan nama program yang dapat dieksekusi yang mengimplementasikan aplikasi.Linux, seperti sistem Unix lainnya (tetapi tidak, sejauh yang saya tahu, bagian non-Unixy dari OS X) mengelola perangkat lunak dengan melacaknya dengan manajer paket, dan menempatkan file individual di mana mereka digunakan . Sebagai contoh, semua program yang dapat dieksekusi dalam satu set direktori kecil dan semua direktori tersebut terdaftar dalam
PATH
variabel ; menjalankansublime_text
mencari file yang disebutsublime_text
di direktori yang terdaftar diPATH
. OS X memerlukan tingkat tipuan ekstra, melaluiopen -a
, untuk menangani aplikasi yang dibongkar dalam pohon direktori tunggal dan terdaftar dalam database aplikasi. Linux tidak memiliki basis data aplikasi apa pun, tetapi diorganisasikan sedemikian rupa sehingga tidak memerlukannya.Jika menjalankan
sublime_text
shell perintah tidak berfungsi untuk Anda, maka Sublime Text belum diinstal dengan benar. Saya tidak pernah menggunakannya, dan tampaknya itu datang sebagai arsip tar, bukan sebagai paket distribusi (mis. Deb atau rpm), jadi mungkin Anda perlu melakukan langkah instalasi tambahan. Ini benar-benar pekerjaan pembuat Sublime Text untuk membuat ini otomatis, tetapi jika mereka belum melakukannya, Anda mungkin dapat melakukannya sendiri dengan menjalankan perintahGanti
…
dengan jalur di manasublime_text
executable berada, tentu saja.The
open
perintah Anda temui adalah nama yang lebih tua untukopenvt
perintah (beberapa distribusi Linux hanya memasukkannya dengan namaopenvt
). Theopenvt
Perintah menciptakan baru konsol virtual , yang hanya dapat dilakukan oleh root dan tidak digunakan sangat sering di abad ini karena kebanyakan orang hanya pernah bekerja di lingkungan jendela grafis.sumber
Anda tidak menyebutkan sistem operasi yang Anda gunakan.
Pada beberapa distribusi Linux,
open
perintahnya adalah tautan simbolik keopenvt
perintah yang membuka biner di konsol virtual baru. Tampaknya bukan itu yang Anda inginkan. Pesan kesalahan Anda memang menunjukkan bahwa Anda menjalankanopenvt
perintah. Perintah ini mengharapkan biner program (yang dapat dieksekusi) sebagai argumen.Saya berasumsi maksud Anda
xdg-open
yang, berbeda denganopenvt
, tidak mengharapkan eksekusi sebagai argumen, tetapi file yang terkait dengan suatu program dan membuka file dengan program tersebut. Anda dapat mengirimkan file dan URL sebagai argumen.Karena itu
xdg-open index.html
harus membuka file di browser Anda,xdg-open image.png
harus membuka file di penampil gambar Anda, dll.sumber
xdg-open
panggilan ini adalah untuk memanggil aplikasi default untuk file itu. Jika Anda ingin menggunakan program lain, panggil saja<program> <file>
. Saya gagal melihat masalahnya.open index.html -a "Sublime Text" -
Itu sebabnya saya katakan "masalah", karena jika Anda menggunakanxdg-open
untuk membuka file html, ada kemungkinan bahwa file th akan dibuka oleh browser bukan oleh editor teks seperti "Sublime Text"Walaupun orang sering menyebut
xdg-open
sebagai meniru fungsi dariopen
, macOSopen
agak berbeda karena 1. tidak mengalihkan apa pun dari stdout / stedrr dan 2. melepaskan apa pun yang ingin Anda jalankan dari terminal (yang hampir selalu seperti yang Anda inginkan ketika meluncurkan GUI aplikasi sehingga Anda tidak memiliki terminal yang tergeletak)Untuk mengatasinya, saya telah membuat padanan yang sepadan dengan menggunakan beberapa alat GNU standar (sintaksnya adalah shell ikan, tetapi konversi ke bash adalah sepele):
Ditambahkan :
Bagi mereka yang menggunakan bash shell, berikut adalah fungsinya:
sumber
Solusi saya (digunakan setiap hari) adalah menggunakan
alias
forxdg-open
.Letakkan ini di
~/.bashrc
:Kemudian tutup dan mulai kembali shell Anda atau
source ~/.bashrc
.Sekarang Anda dapat membuka file apa pun dengan perintah itu ... dari .png ke .jpg ke .docx ke .pdf ke .txt.
sumber