Zeigt eine Zeichenfolge im tmux-Status an, abhängig von der Ausgabe des Befehls

Zeigt eine Zeichenfolge im tmux-Status an, abhängig von der Ausgabe des Befehls

Ich möchte, dass der Name eines Programms (eine Zeichenfolge, nicht der tatsächliche Name) in der Tmux-Statusleiste angezeigt wird, wenn das Programm ausgeführt wird.

Das hier habe ich in meinem set -g status-right:

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

Wo:

  • #(getPid p)ist das Skript, das ich ausführe. Es gibt 0 zurück, wenn das Programm nicht läuft, oder nicht 0 (eine PID oder wc -l), andernfalls
  • #{!=:#(getPid p),program,}sollte 1 oder 0 zurückgeben, abhängig vom Ergebnis des vorherigen Schritts
  • #{?#{!=:#(getPid p),0},program,}sollte "Programm" ausgeben, wenn der vorherige Schritt 1 zurückgibt

Aber ich kann nicht einmal 1 oder 0 mit nur dem ersten Schritt drucken #{!=:#(getPid p),0}. Ich bin nicht sicher, ob dies unterstützt wird, vielleicht #{}werden nur Flags für Bedingungen unterstützt, nicht#()

BEARBEITEN

Ich bin auf #(getPid p | awk '$0 != 0 {print \"program\"}')das eingestellt, was einfacher erscheint, aber es geht trotzdem nicht.

BEARBEITEN

Ein anderer Ansatz, der auch in der Befehlszeile funktioniert:, if [ $(getPid b) != 0 ]; then echo program; fiimmer noch nichts in der Statusleiste.

BEARBEITEN

Ich habe beschlossen, dass mein Skript den Programmnamen wiedergibt, sodass ich nur noch brauche #(getPid p), aber trotzdem geht es nicht. Ich denke, das Problem liegt wahrscheinlich woanders. Dies ist die vollständige Zeile:

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]"

Antwort1

Verstanden, mein getNameSkript muss echo -nstattdessen, aber natürlich muss noch die Aktualisierung durchgeführt werden.

verwandte Informationen