6

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

alias bblog="ssh -t  bbdev tail -f /var/logs/bb/stdout-stderr-`date \"+%Y%m%d\"`.log"

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

有任何想法吗?谢谢

4

2 回答 2

11

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

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
于 2013-04-26T09:25:42.883 回答
3

用 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
于 2013-04-26T13:27:27.333 回答