【发布时间】:2011-07-04 05:47:00
【问题描述】:
我们必须在 Linux(不同的常见发行版)上执行什么命令(来自 Java,但这无关紧要)才能在默认浏览器中打开给定的 URL?
【问题讨论】:
我们必须在 Linux(不同的常见发行版)上执行什么命令(来自 Java,但这无关紧要)才能在默认浏览器中打开给定的 URL?
【问题讨论】:
交叉分布最多的是xdg-open @987654321@
【讨论】:
我相信最简单的方法是使用 Python:
python -m webbrowser "http://www.example.com/"
【讨论】:
xdg-open 相同的 url 相比,在我的系统上运行所需的时间确实是 xdg-open 的 7-8 倍.
在 ubuntu 上你可以试试 gnome-open。
$ gnome-open http://www.google.com
【讨论】:
在 Java(版本 6+)中,您也可以这样做:
Desktop d = Desktop.getDesktop();
d.browse(uri);
虽然这不适用于所有 Linux。在撰写本文时,支持 Gnome,不支持 KDE。
【讨论】:
至少在 Debian 及其所有衍生产品上,有一个“sensible-browser”shell 脚本可以选择最适合给定 url 的浏览器。
【讨论】:
在带有 open 命令的发行版中,
$ open http://www.google.com
【讨论】:
我认为使用xdg-open http://example.com 可能是最好的选择。
如果他们没有安装它,我想他们可能只有 kde-open 或 gnome-open(两者都采用单个文件/url)或其他一些解决方法,例如循环浏览常见的浏览器可执行文件名称,直到你找到一个可以执行的(使用哪个)。如果您想要完整的解决方法/备用方法列表,我建议您阅读 xdg-open(这是一个调用 kde-open/gnome-open/etc. 或其他备用方法的 shell 脚本)。
但是由于 xdg-open 和 xdg-mime(用于其中一种备用)是 shell 脚本,我建议将它们包含在您的应用程序中,如果调用 which xdg-open 失败,请将它们添加到子程序环境中的临时 PATH 变量中并呼唤他们。如果 xdg-open 失败,我建议从它在 stderr 上输出的内容中抛出一个带有错误消息的异常,并捕获异常并打印/显示错误消息。
我会忽略 java awt 桌面解决方案,因为该错误似乎表明他们不打算很快支持非 gnome 桌面。
【讨论】:
###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)
【讨论】:
我认为 shellholic 描述的 xdg-open 和 - 如果失败 - 使用 which 描述的which 命令查找浏览器的解决方案@ 987654321@ 的组合可能是最好的解决方案。
【讨论】:
通过终端在浏览器中打开一个 URL,CentOS 7 用户可以使用 gio open 命令。例如,如果您想打开 google.com,那么gio open https://www.google.com 将在浏览器中打开 google.com URL。
xdg-open https://www.google.com 也可以使用,但此工具已被弃用,请改用gio open。我更喜欢这个,因为这是使用终端命令打开 URL 的最简单方法。
【讨论】:
如果您在 Windows10(包括 WSL2 *nix shell)中,您可以尝试:
explorer.exe https://stackoverflow.com
or
cmd.exe /c start https://stackoverflow.com/?foo=bar
很奇怪,但它有效!
注意:在 WSL 的情况下,存在一个已知错误,它禁止将查询参数传递到 url。解决方法是使用“cmd.exe /c start url”
【讨论】: