据我所知,.desktop
文件是允许自定义应用程序设置的快捷方式。例如,我的/usr/share/applications/
文件夹中就有很多这样的文件。
如果我在 中打开该文件夹nautilus
,我只需双击其关联文件即可运行这些应用程序,例如双击firefox.desktop
运行 Firefox。但是,我找不到通过终端执行相同操作的方法。
如果我这样做,它只会以文本文件的形式gnome-open foo.desktop
打开。如果我将其设为可执行文件,然后在 bash 中运行它,它只会失败(这是预料之中的,它显然不是 bash 脚本)。 编辑:即使我将所有权更改为我自己,执行操作也会给我一条消息。如果我将其设为可执行文件并执行相同的命令,我正在使用的终端选项卡只会关闭(我猜它会崩溃)。最后,如果我这样做,我会收到错误报告。foo.desktop
exec /fullpath/foo.desktop
Permission denied
sudo exec /fullpath/foo.desktop
sudo: exec: command not found
这是我的问题,如何foo.desktop
从终端运行文件?
答案1
gtk-启动
对于任何支持的最新 Ubuntu,gtk-launch
只需转到
gtk-launch <file>
其中<file>
是文件的名称,.desktop
带或不带该.desktop
部分。名称必须不是包括完整路径。
文件.desktop
必须位于/usr/share/applications
、/usr/local/share/applications
或中~/.local/share/applications
。
因此gtk-launch foo
打开/usr/share/applications/foo.desktop
(或foo.desktop
位于其他允许的目录之一)。
从gtk-launch
文档:
gtk-启动使用给定名称启动应用程序。除非另有说明,否则应用程序将在默认屏幕上以适当的启动通知启动。
gtk-启动至少需要一个参数,即要启动的应用程序的名称。该名称应与应用程序桌面文件名匹配,如位于 /usr/share/application 中,带或不带“.desktop”后缀。
可从终端使用或Alt + F2(Alt + F2将命令存储在历史记录中,以便于访问)。
答案2
答案3
现代答案
gtk-launch <app-name>
- 其中<app-name>
是文件的文件名.desktop
,带或不带.desktop
扩展名。
看此主题中的另一个答案更多细节。 我从那个答案中得到了这个信息。
弃用的 shell 工具答案
很久以前写的 - 请参阅这个答案下面的评论,了解为什么这种方法对许多桌面文件不起作用。
运行的命令包含在桌面文件中,前面是,Exec=
因此您可以提取并运行它:
$(grep '^Exec' filename.desktop | tail -1 | sed 's/^Exec=//' | sed 's/%.//' \
| sed 's/^"//g' | sed 's/" *$//g') &
打破这一局面
grep '^Exec' filename.desktop # - finds the line which starts with Exec
| tail -1 # - only use the last line, in case there are
# multiple
| sed 's/^Exec=//' # - removes the Exec from the start of the line
| sed 's/%.//' # - removes any arguments - %u, %f etc
| sed 's/^"//g' | sed 's/" *$//g' # - removes " around command (if present)
$(...) # - means run the result of the command run
# here
& # - at the end means run it in the background
你可以把它放在一个文件中,比如说~/bin/deskopen
内容
#!/bin/sh
$(grep '^Exec' $1 | tail -1 | sed 's/^Exec=//' | sed 's/%.//' \
| sed 's/^"//g' | sed 's/" *$//g') &
然后使其可执行
chmod +x ~/bin/deskopen
然后你可以这样做,例如
deskopen /usr/share/applications/ubuntu-about.desktop
参数(%u
等%F
)很详细这里。它们都与在命令行启动无关。
答案4
虽然 OP 没有询问 KDE,但对于运行 KDE 的任何人来说,都可以使用以下命令:
kioclient exec <path-to-desktop-file>
在 Fedora 上,它包含在kde 运行时rpm。在 Arch 上,它位于kde-cli-工具(HT:@Aron Cederholm)。