Tmux 状态 sed 输出与 cli 不同

Tmux 状态 sed 输出与 cli 不同

我已经研究这个问题一段时间了,但找不到原因。当我在 CLI 中运行以下命令时,它会按预期工作:

$ uptime | sed "s/.*average: \(.*\), \(.*\), \(.*\)$/\1 \2 \3/g"
0.65 0.54 0.57

现在,当我将其添加到我的 tmux.conf 时,如下所示:

set -g status-right '#[fg=green,bg=default,bright]#(uptime | sed -e "s/.*load average: \(.*\), \(.*\), \(.*\)$/\1 \2 \3/g") #[fg=red,dim,bg=default]#(uptime | cut -f 4-5 -d " " | cut -f1 -d ",") #[fg=white,bg=default]%a %b %d %H:%M:%S %Y #[default]'

...它显示整个正常运行时间输出,就像它忽略了 sed 对它所做的操作一样。我不知道为什么它没有按预期工作。有人能给我指出正确的方向吗?

答案1

在 tmux 中转义相当困难。我不得不为此奋斗了一番。看起来你需要转义反斜杠“\”和括号“()”。以下是仅使用最后一分钟的平均负载作为正确状态的示例。

set -g status-right '#(uptime | sed "s/.*load average:\\s\\+\\\([0-9.]\\+\\\),.*/\\1%/")'

剩下的就很简单了。希望这能有所帮助。

相关内容