6

私はbashに次のようなエイリアスを持っています:

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

時計が次の日 (真夜中を過ぎる) になった場合を除いて、問題なく動作します。次のログを追跡するために bblog を再実行する必要があります。しかし、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

エイリアスをシェル関数に置き換えます。

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 に答える