Bash:别名中的缓存命令结果?

com*_*ass 4 bash alias caching

我在bash中有一个别名,如下所示:

alias bblog="ssh -t  bbdev tail -f /var/logs/bb/stdout-stderr-`date \"+%Y%m%d\"`.log"
Run Code Online (Sandbox Code Playgroud)

它工作正常,除非时钟转到第二天,(通过午夜),我必须重新运行bblog来拖尾下一个日志.但date \"+%Y%m%d\"仍然返回上一个日期.它似乎缓存了价值.所以它仍然拖尾以前的日志.

有任何想法吗?谢谢

Pet*_*esh 9

将别名放在单引号中,这会抑制反引号评估直到使用时间.

alias bblog='ssh -t  bbdev tail -f /var/logs/bb/stdout-stderr-`date "+%Y%m%d"`.log'
Run Code Online (Sandbox Code Playgroud)

我建议使用$()而不是反引号,因为它更容易理解逻辑.

一个更简单的例子就是:

alias foo='echo $(date)'

argle:~$ foo
Fri Apr 26 10:29:14 IST 2013
argle:~$ foo
Fri Apr 26 10:29:15 IST 2013
Run Code Online (Sandbox Code Playgroud)