Saya mulai bereksperimen dengan Crunchbang (yang didasarkan pada Debian, dan menggunakan terminator ) sebagai lingkungan pengembangan web, dan salah satu hal yang saya perjuangkan adalah perilaku xdg-open
. Saya berasal dari latar belakang OSX, jadi maafkan saya jika pertanyaan ini menjadi padat.
Saya ingin dapat membuka url dengan xdg-open http://www.google.com
dan kemudian terus menggunakan jendela terminal yang sama untuk bekerja (begitulah open
fungsi di OSX). Saat ini, menggunakan xdg-open
menempati tab / sesi saat ini sampai saya menutup jendela browser, atau mengakhiri secara manual dengan ctrl + c
. Saya lebih suka memulai proses baru, dengan cara itu saya bisa membuka URL, merujuk ke data pada halaman, dan menggunakannya di tab / jendela yang sama tanpa perlu membuka yang lain.
sumber
Jawaban:
Aneh, kerjanya seperti itu di luar kotak pada Debian saya. Coba jalankan di latar belakang:
Anda dapat menjadikan ini sebagai fungsi dengan menambahkan baris-baris ini ke
~/.bashrc
file Anda :Anda kemudian bisa menjalankan
open http://www.google.com
dan menjalankannya di latar belakang.sumber
open
, (yaitu open = 'xdg-open') apakah ada cara untuk mendapatkan fungsionalitasxdg-open <url> &
tanpa menggunakan fungsi shell?Jika Anda ingin melepaskan proses dari shell saat ini daripada memulai sebagai pekerjaan latar belakang
xdg-open http://www.google.com &
, saya sukadetach
utilitas:Orang bisa membuat alias untuk ini. Saya suka
detach
lebihnohup
sebagai menutup stdin stdout dan stderr secara default sehingga doa yang lebih bersih.sumber
detach
sepertinya tidak ada di distro saya.nohup
meluncurkan proses, tetapi masih menempati jendela terminal.detach
juga tidak ada di distro saya; tapi python dapat menangani membuka URL dan memisahkan:python -m webbrowser -t "http://example.com"
. Ini seharusnya bekerja di luar kotak pada hampir semua distro linux yang agak baru.detach
bahkan tidak di AUR, terbukti mudah untuk menginstal dari sumber dan selanjutnya adalah satu-satunya program yang mencapai apa yang saya inginkan. (alternatif yang tercantum di sini dan didetach
situs web tidak memungkinkan menutup shell selamaxdg-open
berjalan, atau setidaknyadetach
tidak membuat shell saya mengeluh sedikitpun)xdg-open
menunggu program selesai. Ini dengan desain. Jika program tersebut adalah program mode teks, ia harus tetap berada di latar depan di terminal. Sekalipun program ini adalah GUI, perilaku ini bermanfaat jikaxdg-open
digunakan dari skrip dan skrip ingin melakukan sesuatu setelah file diedit (mis. Mengirim versi baru ke suatu tempat atau membuat sesuatu dengan versi baru).Jika Anda tidak ingin menunggu, jalankan
xdg-open
di latar belakang. Anda dapat menjalankan perintah shell di latar belakang dengan meletakkan tanda ampersand di bagian akhir.Dengan beberapa program,
xdg-open
segera kembali. Apa yang terjadi sebenarnya adalah bahwa program yangxdg-open
memanggil kembali segera. Ini biasanya terjadi dengan program GUI yang membuka semua file dalam satu contoh: ketika Anda memulai mereka kedua kalinya, mereka mengirim pesan instance yang berjalan untuk memberitahu itu untuk membuka file, dan segera keluar.sumber
xdg-open
segera kembali (saya dapat mengonfirmasi bahwa pada Ubuntu 16.04), tetapi program yang diminta dapat pindah ke latar belakang. Misalnya, di sistem saya,xdg-open
panggil Evince untuk file PDF;evince foo.pdf
blok sampai Anda menutup file PDF, kecuali PDF sudah terbuka, dalam hal inievince
proses kedua dimulai denganxdg-open
memfokuskan instance dan keluar yang ada.xdg-open
tidak memiliki kendali atas hal itu, kecuali ada cara untuk membuat program tetap menjalankan proses.Dengan menggabungkan jawaban terdon dan diskusi Dan D. tentang
nohup
saya membuat fungsi yang melakukan persis apa yang saya inginkan:Saya menambahkan ini ke
.bashrc/.zshrc
file saya :Untuk penjelasan tentang
/dev/null 2>&1
lihat diskusi ini tentang persembunyianstdout
danstderr
.sumber
Coba ini:
Saya menggunakan teknik ini untuk en-antrian magnet: // URL ke klien Bit Torrent saya Vuze.
Kutipan tunggal membantu melindungi konten URL sehingga shell tidak berusaha menafsirkannya.
sumber
xdg-open
? Sepertinya beberapa penjawab di sini telah menunjukkan bahwa perilaku normal adalah bahwa kontrol dikembalikan ke terminal setelah beberapa periode waktu.Jika Anda perlu membuka halaman web dari command line (loop), Anda bisa membuka browser sebelum memulai skrip.
Dalam hal ini tidak menunggu browser ditutup setelah tautan pertama, tetapi membuka semuanya di tab baru.
sumber
Seperti hari ini, tidak satu pun dari opsi itu yang bekerja untuk saya. Saya sepenuhnya sadar bahwa OP mengatakan "use xdg-open", maaf sebelumnya.
Saya akhirnya melakukan yang sederhana-mati
chrome https://google.es --new-window || chromium https://google.es --new-window || firefox https://google.es
.Jika Anda tidak memiliki salah satu dari ketiga browser tersebut, silakan gunakan yang benar dengan preferensi pesanan Anda.
Catatan: Firefox membuka jendela baru tanpa menambahkan apa pun. Kasing tidak bekerja mulus untuk Anda, gunakan
firefox https://google.es -new-instance -new-window
. Perhatikan bahwa hanya satu-
untuk bendera firefox.sumber
tolak adalah perintah yang tepat untuk ini.
Saya menggunakan 2 fungsi untuk ini, agar lebih mudah dibaca.
sumber
disown
tidak mencegah kesalahan dikirim ke terminal.