Linux: Befehl zum Öffnen der URL im Standardbrowser

75

Welchen Befehl müssen wir (unter Java, aber das sollte keine Rolle spielen) unter Linux (verschiedene gängige Distributionen) ausführen, um eine bestimmte URL im Standardbrowser zu öffnen?

Mot
quelle

Antworten:

104

Die am weitesten verbreitete ist xdg-open http://stackoverflow.com

Shellholic
quelle
8
Leider nicht in RHEL
Ondra Žižka
@ OndraŽižka vernünftiger Browser ist auch nur Debian, nicht wahr? Was würde in RHEL funktionieren?
cmc
1
Es existiert in RHEL, installieren Sie das Paket 'xdg-utils'.
Tim Peters
In meinem Debian 7 nicht vorhanden. Müssen stattdessen 'wget' verwenden.
estornes
In Debian ist es auch das Paket "xdg-utlls", genau wie in RHEL.
Sleske
30

Ich glaube, die einfachste Methode wäre die Verwendung von Python:

python -m webbrowser "http://www.example.com/"
Kevin Grant
quelle
5
klappt wunderbar. auch plattformübergreifend (funktioniert zumindest unter Mac & Linux)
Paul Liang
Auch unter Windows, wenn Python installiert ist.
Mikhail Gerasimov
Ich mag diese Lösung besser für einen plattformübergreifenden Anwendungsfall, aber nur für Linux dauert die Ausführung auf meinem System etwa 7-8x so lange wie xdg-openfür dieselbe URL.
Taylor Edmiston
Nur als Hinweis für Leute, die dies unter Windows ausführen: Ich habe festgestellt, dass es häufig den Internet Explorer öffnet. (anstelle der vom Benutzer konfigurierten Standardeinstellung) Aber es funktioniert, denke ich. 😅
Lazerbeak12345
8

In Java (Version 6+) können Sie außerdem Folgendes tun:

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

Dies funktioniert jedoch nicht unter allen Linuxen. Zum Zeitpunkt des Schreibens wird Gnome unterstützt, KDE nicht.

Daniel Winterstein
quelle
7

Zumindest für Debian und alle seine Derivate gibt es ein Shell-Skript für vernünftige Browser, das den für die angegebene URL am besten geeigneten Browser auswählt.

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

krtek
quelle
4

Ich denke, die Verwendung xdg-open http://example.comist wahrscheinlich die beste Wahl.

Falls sie es nicht installiert haben, haben sie möglicherweise nur kde-openoder gnome-open(beide benötigen eine einzelne Datei / URL) oder eine andere Problemumgehung, z. B. das Durchlaufen allgemeiner ausführbarer Browsernamen, bis Sie einen finden, der ausgeführt werden kann (mit welchem ). Wenn Sie eine vollständige Liste der Problemumgehungen / Fallbacks wünschen, empfehle ich das Lesen von xdg-open (es ist ein Shell-Skript, das kde-open / gnome-open / etc. Oder einen anderen Fallback aufruft).

Da xdg-open und xdg-mime (für einen der Fallbacks verwendet) Shell-Skripte sind, würde ich empfehlen, sie in Ihre Anwendung aufzunehmen. Wenn der Aufruf which xdg-openfehlschlägt, fügen Sie sie der temporären PATH-Variablen in Ihrer Unterprogrammumgebung hinzu und rufen Sie sie auf. Wenn xdg-open fehlschlägt, würde ich empfehlen, eine Ausnahme mit einer Fehlermeldung von der Ausgabe auf stderr auszulösen, die Ausnahme abzufangen und die Fehlermeldung zu drucken / anzuzeigen.

Ich würde die Java awt Desktop-Lösung ignorieren, da der Fehler darauf hindeutet, dass sie nicht planen, bald Nicht-Gnome-Desktops zu unterstützen.

Roman A. Taycher
quelle
3

Bei Distributionen, die mit dem Befehl open geliefert werden,

$ open http://www.google.com
Anand Varma
quelle
3
Unter Ubuntu 16.04 funktioniert es nicht, weil versucht wird, eine Datei zu öffnen.
Omikron
Funktioniert möglicherweise nicht unter Linux, funktioniert aber unter Mac OSX
Atav32 vor
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)
JimmyLandStudios
quelle
4
Bitte erwägen Sie, Ihrer Antwort einige Details hinzuzufügen.
Shamas S
Wenn Sie einen dieser Befehle in einem Shell-Skript verwenden, müssen Sie zuerst testen, ob sie vorhanden sind (z. B. Befehl -v $ CMD). $? = 0
JimmyLandStudios
1

Ich denke, eine Kombination aus xdg-open, wie von shellholic beschrieben, und - falls dies fehlschlägt - der Lösung, einen Browser mit dem hierwhich beschriebenen Befehl zu finden, ist wahrscheinlich die beste Lösung.

alexsb
quelle
1

Zum Öffnen einer URL im Browser über das Terminal können CentOS 7-Benutzer den Befehl gio open verwenden. Wenn Sie beispielsweise google.com gio open https://www.google.comöffnen möchten, wird die google.com-URL im Browser geöffnet.

xdg-open https://www.google.comfunktioniert auch, aber dieses Tool ist veraltet. Verwenden Sie gio openstattdessen. Ich bevorzuge dies, da dies der einfachste Weg ist, eine URL mit einem Befehl vom Terminal aus zu öffnen.

Kshitiz Sharma
quelle