如何在.desktop文件中执行空格转义


15

我想制作一个.desktop这里描述的文件。

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=/home/user/opt/sublime/Sublime Text 2/sublime_text %U

但是,在Nautilus的上下文菜单中使用Open来运行它这给了我

找不到'/ home / user / opt / sublime / Sublime'

所以我尝试了

Exec="/home/user/opt/sublime/Sublime Text 2/sublime_text" %U

并得到

在找到匹配的引号之前,文本结束。(文本为“” / home / user / opt / sublime / Sublime”)

在文件Exec行中转义空格的正确方法是什么.desktop

Answers:


5

在每个空格之前加一个反斜杠:

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=/home/user/opt/sublime/Sublime\ Text\ 2/sublime_text %U

4
那是行不通的:Text ended just after a '\' character. (The text was '/home/user/opt/sublime/Sublime\')
nh2 2012年

有趣,对我有用。
1

我们使用相同的版本吗?GNOME nautilus 3.4.2在12.04。
nh2 2012年

在Ubuntu 16.04上对我有效,顺便说一句,双引号也适用。但是,请勿转义空格或引用Path和Icon值,否则可能会导致应用程序无法运行(在我的计算机上,破折号图标闪烁但不执行任何操作,即使Terminal = true也无法打开终端)。顺便说一句,如果您不逃避Exec,也会遇到同样的问题,因此您可以想象我花了一些时间来找到处理.desktop每一行的方法!
hsandt

很奇怪...如果我手动运行启动器,此方法有效,但无法自动启动。此功能是超级错误的。
阿德里安·洛佩兹

3

我遇到了完全一样的问题!在尝试了各种转义/引用模式后,我决定最简单的解决方案是sublime_text在$ PATH上具有符号链接(或者您可以使用命令行别名)。

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[C]=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png
Name[C]=Sublime Text 2
Exec=Sublime-Text-2 %U
Comment[C]=Text Editor
Name=Sublime Text 2
Comment=Text Editor
Icon=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png
X-Desktop-File-Install-Version=0.21

4
这是一个明智的解决办法,但我们仍然不知道我们是如何意味着在使用空格.desktop的文件。
nh2 2013年

2
同意,尽管对我来说,似乎只是Exec解析方式上的错误,而不是我们错误地实现。它会将空格解释为值的结尾,这很奇怪,因为您可以在其他属性中使用未转义的空格/未加引号的字符串作为路径!
c24w

3

您是否尝试过使用''引号而不是“”引号?我在Exec行中有一个自定义的.desktop文件,我的文件使用''引号。


3

按照(http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubuntu-14-04)网站上的安装说明进行操作时,我遇到了同样的问题。所以我的解决方案是:

  1. 从以下位置删除/删除称为“ sublime”的软链接 /usr/bin

  2. 通过将“ SublimeText 2”文件夹重命名为“ SublimeText2”,删除所有空格

  3. 在以下位置重新创建软链接 /usr/bin/

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. 制作.desktop文件,包括:

    Exec=/opt/SublimeText2/sublime_text %U
    Icon=/opt/SublimeText2/Icon/48x48/sublime_text.png
    


0

我在Ubuntu 12.04中使用GNOME nautilus 3.4.2遇到了相同的问题。我在Moblin UI框架中针对同一问题错误报告中找到了这种替代解决方法,我更喜欢上面提到的那种需要将每个文件夹添加到$ PATH的解决方法。

解决方法很简单:
“在没有空格的路径中创建符号链接,并将EXEC字段指向该链接。”


-1

.desktop文件不能像shell一样处理引号,空格和转义字符。可能最好的选择是在exec行中调用Shell以获取预期的行为,如下所示:

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=sh -c "/home/user/opt/sublime/Sublime Text 2/sublime_text" %U

有关更多信息,请参见man sh。这也避免了像其他答案一样必须创建和维护符号链接。


该解决方案不会将参数(例如文件路径)传递给最终调用的命令。-1
大卫·佛斯特

嗯 显然,它也不可靠。在发布此解决方案之前,我已经对其进行了测试,并且该方法有效。但是后来我修改了测试以检查您是否正确,即使将其恢复为正常工作后,现在也无法正常工作。奇怪的。
KDØBPV
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.