Tmux 상태 표시 줄 쉘 명령에서 환경 변수 사용


10

세 개의 시간대를 표시하는 tmux 상태 표시 줄을 만들려고합니다 US Eastern Time :: UTC :: Central European Time. 은 Using TZ환경 변수하면 만드는 date명령은 특정 시간대의 시간을 보여줍니다.

이 tmux.conf 설정을 사용하여 시도했습니다.

set -g status-right "#[fg=white]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: #(TZ=America/New_York date +%H:%M) :: #(date -u +%H:%M) UTC :: #(TZ=Europe/Belgrade date +%H:%M)"

그러나 TZ=foo내부 에서는 전달 이 작동하지 않습니다 #(…). ( date예상 한 것 대신 서버 를 얻습니다 ). 어떤 제안?

답변:


16

TMUX 함께 시간 형식을 확장 strftimestatus-left하고 status-right그것을 확장하기 전에 #(…)다른 날카로운 이스케이프 시퀀스. 따라서 %H:%M현지 시간으로 먼저 확장되고 date이미 숫자 인 인수로 실행됩니다.

퍼센트 부호를 두 배로하십시오.

set -g status-right "#[fg=white]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: #(TZ=America/New_York date +%%H:%%M) :: #(TZ=UTC date -u +%%H:%%M) UTC :: #(TZ=Europe/Belgrade date +%%H:%%M)"

1

나는 tmux에 익숙 #()하지 않지만 문제는 $()쉘에서 와 같은 방식으로 작동하지 않는다고 생각합니다 .

쉘을 사용하여 문제를 해결할 수 있습니다.

#(bash -c 'TZ=Europe/Belgrade date +%H:%M')

불행히도 이것은 작동하지 않습니다 (tmux 1.6, Gentoo). 여전히 UTC 날짜를 인쇄하고 있습니다.
엑스 칼리버

@Excalibur 상당히 이상합니다. (와 wrapperscript을 만드는 시도 TZ=Europe/Belgrade date +%H:%M)와#(/path/to/wrapperscript)
Hauke Laging에게

그래, 그 해결책은 나에게 일어났다. 이 tmux.conf가 Chef를 사용하여 동적으로 설정 되기는하지만 외부 종속성을 추가하는 것이 주저합니다. 아마도 tmux에 문제를 제기해야 할 것입니다. 그래도 고마워!
엑스 칼리버
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.