我在bash中有一个别名,如下所示:
alias bblog="ssh -t bbdev tail -f /var/logs/bb/stdout-stderr-`date \"+%Y%m%d\"`.log"
它工作正常,除非时钟转到第二天,(通过午夜),我必须重新运行bblog来拖尾下一个日志。但date \"+%Y%m%d\"
仍会返回上一个日期。它似乎缓存了价值。所以它仍然拖尾以前的日志。
有什么想法吗?感谢
答案 0 :(得分:9)
将别名放在单引号中,这会抑制反引号评估直到使用时间。
alias bblog='ssh -t bbdev tail -f /var/logs/bb/stdout-stderr-`date "+%Y%m%d"`.log'
我建议使用$()
代替反引号,因为它更容易理解逻辑。
它的一个更简单的例子是:
alias foo='echo $(date)'
argle:~$ foo
Fri Apr 26 10:29:14 IST 2013
argle:~$ foo
Fri Apr 26 10:29:15 IST 2013
答案 1 :(得分:2)
用shell函数替换你的别名:
bblog () {
ssh -t bbdev tail -f /var/logs/bb/stdout-stderr-$(date "+%Y%m%d").log
}
这会将调用推迟到date
,直到您实际运行该函数为止,使引用更简单。它也更灵活,允许您在需要时传递参数。例如,您可以指定要登录的备用主机:
bblog () {
host=${1:-bbdev}
ssh -t "$host" tail -f /var/logs/bb/stdout-stderr-$(date "+%Y%m%d").log
}
$ bblog # Check bbdev
$ bblog bother # Check a different host