根據命令的輸出在 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改為,但當然還有刷新問題。

相關內容