例子

例子

如何为终端或默认应用程序(浏览器、终端)编写带有默认变量的命令,以便它可以在任何 Ubuntu 或 Debian 上运行?

例如 Ubuntu mate 有 mate-terminal 如何编写在每个发行版中打开默认终端和浏览器的命令?因此,在这个命令行中不会是 mate-terminal 和 firefox,而是它们的一些包装器,用于任何发行版用户的默认终端或浏览器应用程序。

mate-terminal -- bash -c 'sleep 2; dpkg -S "\/bin/$(xprop WM_CLASS | cut -d "\"" -f2)"; sleep 5; firefox'

如何找到默认的应用变量或包装器,以便命令可以在任何发行版终端应用中运行?如何找到默认的浏览器或文本编辑器变量?

答案1

如果您需要在多个平台/发行版上运行相同的命令,那么有一种解决方法,即编写相同命令的自定义副本并将它们与操作||员分开,如果第一个命令失败,操作员将尝试执行下一个命令。

例子

命令mate-terminal

mate-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox'

命令gnome-terminal

gnome-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox'

将在任一终端上运行的命令:

mate-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox' || gnome-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox'

该命令将在任一终端上运行并启动firefoxgoogle-chromechromium

mate-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox || google-chrome || chromium' || gnome-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox || google-chrome || chromium'

然而,这需要研究目标平台来找出如何正确运行命令。

祝你好运

答案2

我不太了解不同的发行版如何为 Web 浏览器和终端仿真器设置其首选应用程序,但我知道 Xfce 桌面环境。如果您安装了exo-utils软件包,也许您可​​以对其他 DE 执行相同的操作。

首选应用程序可以通过运行来设置

exo-preferred-applications

并且您的示例命令(我不知道其目的)将表述如下:

exo-open --launch TerminalEmulator bash -c 'sleep 2; dpkg -S "\/bin/$(xprop WM_CLASS | cut -d "\"" -f2)"; sleep 5; exo-open --launch WebBrowser; read'

read是必要的,因为网络浏览器可能会随终端窗口关闭。

答案3

以下是使用 Debian 替代系统重写您的命令:

x-terminal-emulator -e bash -c 'sleep 2; dpkg -S "\/bin/$(xprop WM_CLASS | cut -d "\"" -f2)"; sleep 5; x-www-browser'

-e注意终端仿真器应该运行的命令的用途。

如果你想更改默认终端仿真器,你可以运行

sudo update-alternatives --config x-terminal-emulator

要更改默认 Web 浏览器,请运行

sudo update-alternatives --config x-www-browser

相关内容