Linux桌面文件Bash命令中的Date命令

时间:2019-04-13 15:14:05

标签: linux

这是关于Linux上的date命令的一个相当具体的问题,它是桌面文件中bash命令的一部分。

环境:ubuntu 16.04

我有一个桌面文件,该文件执行bash命令,该命令运行脚本并将其输出重定向到带日期的日志文件。如果直接从终端运行bash命令本身可以正常工作:

bash -c "/path/to/script &> /var/log/$(date +%Y%m%d).out"

上面的命令创建一个文件,例如/var/log/20190413.out。但是,如果我将此命令用作桌面文件的一部分,则会运行脚本,但不会创建输出文件。这是一个示例桌面文件:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=bash -c "/path/to/script &> /var/log/$(date +%Y%m%d).out"

这似乎特定于date命令。例如,如果我在桌面文件中将其替换为$(hostname),它将记录到/var/log/<my hostname>.out

以前有人遇到过吗?幕后有什么奇怪的事吗? 注意:我并不是想找到一种解决方法,而是想了解自己在做什么错。谢谢!

1 个答案:

答案 0 :(得分:1)

这是由于date命令参数中的百分号引起的。即使在双引号中,它也是桌面文件中的特殊字符。要转义它,请改用“ %%”。 here有据可查。