私のpowerlevel10kカスタムプロンプトの場合、現在のエポック以降の秒をカンマで区切って表示するこの機能があります。現在の時間の下に表示されるので、常に現在のエポック時間が何であるかをほぼ覚えていることを知らせる通知があります。
function prompt_epoch() {
MYEPOCH=$(/bin/date +%s | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')
p10k segment -f 66 -t ${MYEPOCH}
}
次のコマンドを使用すると、プロセスをフォークせずにこれを行うことができると言われました。
$ zmodload -F zsh/datetime p:EPOCHSECONDS
$ printf "%'d" $EPOCHSECONDS
1,648,943,504
しかし、分割せずにこれを行う方法はわかりません。私はpowerlevel10kを取得する前にその行を追加する方法を知っていますが、zmodload
フォークなしでフォーマットする方法がわかりません。~/.zshrc
${EPOCHSECONDS}
私が知っているようにしたら、次のようにしたでしょう。
function prompt_epoch() {
MYEPOCH=$(printf "%'d" ${EPOCHSECONDS})
p10k segment -f 66 -t ${MYEPOCH}
}
しかし、私が知っているのは、プロンプトが呼び出されるたびにプロセスが分岐し続けるということです。そうですか?フォークが必要なプロセスを実行しないと、最新のエポック秒を取得する方法が見つからないと思うので、与えられたアドバイスを誤解しているのでしょうか?
ベストアンサー1
printf
のユーティリティには、「変数として印刷」するオプションがあります。bash
zsh
-v
printf -v MYEPOCH "%'d" ${EPOCHSECONDS}
上記のコマンドの実際の結果は、現在のロケールによって異なります。