2014-06-16 51 views
5

我试图创建一个bash别名,每次调用别名时都会打印当前的UNIX时间戳。我在我的bash的个人资料如下:Bash别名用文件名中的当前时间戳创建文件

alias unix="echo "$(date +%s)"" 

然而,似乎当前Unix时间戳正在尽快bash的配置文件来源存储,并且不会每个别名叫做时间而改变。

例如,如果我每隔10秒调用一次unix别名,输出总是相同的。如何创建将在调用别名时评估unix时间戳的别名。这可能吗?

回答

10

使用单引号,以防止直接扩展。

alias unix='echo $(date +%s)' 

更新:虽然我很高兴已经能够解释单引号和双引号之间的不同膨胀行为,也请看到其他的答案,罗比Cornelissen,一种更有效的方式来获得相同结果。这里不需要echo,因为它只输出date已经自己输出的数据。因此,date不需要在子外壳中运行。

+0

非常感谢。它不会让我接受你的答案7分钟,但我会。 – flyingL123

+0

此外,只是为了笑声,你可以通过转义$来实现双引号,这也会阻止立即扩展:'alias unix =“echo \ $(date +%s)”'。 –

+0

+1解释OP的问题。 – mklement0

2

$ alias unix="date +%s" 
$ touch myfile.$(unix) 
$ touch myfile.$(unix) 
$ ls -l myfile* 
-rw-r--r-- 1 rbednark wheel 0 Apr 11 21:46 myfile.1460436366 
-rw-r--r-- 1 rbednark wheel 0 Apr 11 21:46 myfile.1460436368 
+0

+1为更优雅的解决方案(虽然OP的问题没有解释)。 – mklement0

相关问题