Linux: команда для відкриття URL-адреси в браузері за замовчуванням


75

Яку команду ми повинні виконати (з Java, але це не повинно мати значення) в Linux (різні поширені дистрибутиви), щоб відкрити дану URL-адресу в браузері за замовчуванням?

Відповіді:


106

Найбільш поширеним є такий xdg-open http://stackoverflow.com


8
На жаль, немає в RHEL
Ondra Žižka

@ OndraŽižka розумний браузер теж лише для debian, чи не так? Що працює в RHEL?
cmc

1
Він існує в RHEL, встановіть пакет 'xdg-utils'.
Тім Пітерс,

Немає в моєму Debian 7. Натомість потрібно використовувати 'wget'.
estornes

У Debian це також пакет "xdg-utlls", як і в RHEL.
sleske

30

Я вважаю, що найпростішим методом було б використання Python:

python -m webbrowser "http://www.example.com/"

5
працює як шарм. також крос-платформа (принаймні працює на mac & linux)
Пол Лян

Також у вікнах, якщо встановлений Python.
Михайло Герасимов

Мені більше подобається це рішення для використання на різних платформах, але лише для Linux це займає ~ 7-8x стільки часу для роботи в моїй системі, ніж xdg-openдля тієї самої URL-адреси.
Тейлор

Так само, як примітка для людей, які працюють з цим у Windows: я виявив, що це часто відкриває Internet Explorer. (замість настроєного користувачем за замовчуванням) Але це працює, я думаю. 😅
Lazerbeak12345

12

на ubuntu ви можете спробувати gnome-open.

$ gnome-відкрити http://www.google.com


8

У Java (версія 6+) ви також можете зробити:

Desktop d = Desktop.getDesktop();
d.browse(uri);

Хоча це не буде працювати на всіх Linux. На момент написання статті Gnome підтримується, а KDE - ні.


7

Принаймні у Debian та всіх його похідних існує сценарій оболонки "розумного браузера", який вибирає браузер, який найкраще підходить для даної URL-адреси.

http://man.he.net/man1/sensible-browser


4

Я думаю, що використання xdg-open http://example.com, мабуть, найкращий вибір.

Якщо вони не встановлені, я думаю, вони могли б просто kde-openабоgnome-open (обидва вони беруть один файл / URL-адресу) або якесь інше обхідне рішення, таке як циклічне використання загальних імен виконуваних файлів браузера, доки ви не знайдете такого, який можна виконати (використовуючи який ). Якщо ви хочете отримати повний перелік обхідних шляхів / запасних варіантів, я пропоную прочитати xdg-open (це скрипт оболонки, який викликає kde-open / gnome-open / etc. Або якийсь інший запасний варіант).

Але оскільки xdg-open та xdg-mime (використовуються для одного з резервних копій,) є сценаріями оболонки, я б рекомендував включити їх у свою програму, і якщо виклик which xdg-openне вдасться, додайте їх до тимчасової змінної PATH у вашому середовищі підпрограм і зателефонуйте їм. Якщо xdg-open не вдається, я рекомендую викинути виняток із повідомленням про помилку з того, що він виводить на stderr, і зловити виняток і надрукувати / відобразити повідомлення про помилку.

Я б проігнорував рішення Java awt Desktop, оскільки помилка, схоже, вказує на те, що вони не планують підтримувати робочі столи не-gnome найближчим часом.


3

На дистрибутивах, що постачаються з командою open,

$ open http://www.google.com

3
На Ubuntu 16.04 це не працює, оскільки він намагається відкрити файл.
omikron

2
###1     Desktop's -or- Console use:
sensible-browser $URL; # Opinion: best. Target preferred APP.
# My-Server translates to: w3m [options] [URL or filename] 
## [ -z "$BROWSER" ] && echo "Empty"
# Then, Set the BROWSER environment variable to your desired browser.

###2     Alternative 
# Desktop (if [command-not-found] out-Dated)
x-www-browser http://tv.jimmylandstudios.xyz # firefox

###3     !- A Must Know -!
# Desktop (/usr/share/applications/*.desktop)
xdg-open $URI # opens about anything on Linux (w/ .desktop file)

4
Будь ласка, додайте детальну інформацію до своєї відповіді.
Шамас S,

При використанні будь-якої з цих команд у сценарії оболонки вам потрібно буде перевірити, чи вони існують спочатку (наприклад, команда -v $ CMD). $? = 0
JimmyLandStudios

1

Я думаю, що комбінація xdg-open, як описано shellholic, і - якщо це не вдається - рішення пошуку браузера за допомогою whichкоманди, як описано тут, є, мабуть, найкращим рішенням.


1

Для відкриття URL-адреси в браузері через термінал користувачі CentOS 7 можуть використовувати команду gio open. Наприклад, якщо ви хочете відкрити google.com, тоді gio open https://www.google.comу браузері відкриється URL-адреса google.com.

xdg-open https://www.google.comтакож буде працювати, але цей інструмент застарів, використовуйте gio openзамість нього. Я віддаю перевагу цьому, оскільки це найпростіший спосіб відкрити URL-адресу за допомогою команди з терміналу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.