해당 프로그램이 실행 중인 경우 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
. 물론 새로 고침 문제도 있습니다.