我在 bash 中有一个别名,如下所示:
alias bblog="ssh -t bbdev tail -f /var/logs/bb/stdout-stderr-`date \"+%Y%m%d\"`.log"
它工作正常,除非时钟转到第二天(通过午夜),我必须重新运行博客以跟踪下一个日志。但date \"+%Y%m%d\"
仍返回前一个日期。它似乎缓存了该值。所以它仍然拖尾以前的日志。
有任何想法吗?谢谢
将别名放在单引号中,这会抑制反引号评估,直到使用时间。
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
用 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