我正在尝试创建一个bash别名,每次调用别名时都会打印当前的UNIX时间戳。我在bash配置文件中有以下内容:
alias unix="echo "$(date +%s)""
但是,一旦bash配置文件被提供,似乎存储了当前的unix时间戳,并且每次调用别名时它都不会更改。
例如,如果我将unix别名分别调用三次10秒,则输出始终相同。如何创建一个别名来评估调用别名时的unix时间戳。这可能吗?
答案 0 :(得分:10)
使用单引号来防止立即扩展。
alias unix='echo $(date +%s)'
更新:虽然我很高兴能够解释单引号和双引号之间的不同扩展行为,但另请参阅Robby Cornelissen的另一个答案,以获得更有效的方法来获得相同的结果。这里不需要echo
,因为它只输出date
已经输出的内容。因此,date
不需要在子shell中运行。
答案 1 :(得分: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