Exec中的时间戳= .desktop文件的行可能吗?

Lubuntu 16.04 – Openbox会话

我可以使用终端用gedit打开带时间戳的文件:

 gedit ~/$(date +%Y%m%d%H%M%S).txt 

该命令也可以通过Openbox中的键盘快捷方式使用。

  # gedit time-stamped file sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'  

但我不能通过.desktop文件的Exec=行来做同样的事情。

 Exec=sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt' 

只需创建一个名为~/.txt的文件

那么我如何获得.desktop文件来做我想要的呢?

不幸的是,.desktop文件并不总是按照我们希望的方式调用子shell $()命令。 我发现的一种方法是创建另一个包含sub-shell命令的脚本来打开这样的文件。

Exec行看起来像:

 Exec=/path/to/script 

那么你的脚本文件将包含打开新文件的命令:

 #!/bin/sh gedit ~/$(date +%Y%m%d%H%M%S).txt 

该脚本也必须是可执行的:

 chmod +x /path/to/script 

希望这可以帮助!

问题

不需要脚本。

问题不在于.desktop文件无法运行具有子shell的命令,因为

 Exec=/bin/bash -c "echo $(date) > ~/out.txt" 

.desktop文件中完美运行。

摆弄命令,我得出的结论是% -character引起了问题。 我没有解释它,到目前为止,我找不到有关如何解决或逃避的信息。

因此,我一直在寻找一个命令,以便在使用可疑角色的情况下获得时间。

或者使用Ruby作为日期和时间

这导致我使用Ruby ,它从命令生成当前日期和时间:

 $ ruby -e 'puts Time.now.inspect' 2016-05-29 16:12:36 +0200 

当我们使用awk编辑输出,删除空格和分隔符时,我们只需要我们想要的, 以及 .desktop文件中的工作命令,因为我们不使用%

 Exec=/bin/bash -c "gedit ~/$(ruby -e 'puts Time.now.inspect' | awk -F'[: -]' '{print $1$2$3$4$5$6}')" 

在此处输入图像描述

注意!

毫无疑问,命令可以“迷住”一点,我可能会在今天或明天稍微编辑一下这个答案。