プログラムが実行中の場合、プログラムの名前 (実際の名前ではなく文字列) が 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
が、もちろん更新の問題もあります。