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}')"
注意!
毫无疑问,命令可以“迷住”一点,我可能会在今天或明天稍微编辑一下这个答案。