根据命令的输出在 tmux 状态下显示字符串

根据命令的输出在 tmux 状态下显示字符串

如果该程序正在运行,我希望该程序的名称(字符串,而不是实际名称)显示在 tmux 状态栏中。

这是我所拥有的set -g status-right

#{?#{!=:#(getPid p),0},program,}

在哪里:

  • #(getPid p)是我正在运行的脚本,如果程序未运行则返回 0,否则返回非 0(PID 或 wc -l)
  • #{!=:#(getPid p),program,}应根据上一步的结果返回 1 或 0
  • #{?#{!=:#(getPid p),0},program,}如果上一步返回 1,则应该打印“program”

但我甚至无法仅通过第一步打印 1 或 0。#{!=:#(getPid p),0}我不确定这是否受支持,也许只有#{}条件标志才受支持,而不是#()

编辑

我认为#(getPid p | awk '$0 != 0 {print \"program\"}')这个方法似乎更简单,但仍然不可行。

编辑

另一种在命令行上也有效的方法:if [ $(getPid b) != 0 ]; then echo program; fi,状态栏上仍然没有任何内容。

编辑

我决定让我的脚本回显程序名称,所以我需要的只是#(getPid p),但仍然不行。我认为问题可能出在其他地方。这是完整的一行:

set -g status-right "#(getName p) |#[fg=colour239,bg=colour236,nobold,nounderscore,noitalics]#[fg=colour253,bg=colour239] %Y-%m-%d | %H:%M #[fg=colour103,bg=colour239,nobold,nounderscore,noitalics]#[fg=colour236,bg=colour103]"

答案1

明白了,我的getName脚本必须echo -n改,但是当然还有刷新的问题。

相关内容