명령 출력에 따라 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. 물론 새로 고침 문제도 있습니다.

관련 정보