Menggunakan variabel lingkungan dalam perintah shell status bar Tmux


10

Saya mencoba untuk membuat tmux bar status yang menunjukkan tiga zona waktu: US Eastern Time :: UTC :: Central European Time. Menggunakan TZvariabel lingkungan membuat dateperintah menunjukkan waktu dalam zona waktu tertentu.

Saya mencoba melakukannya dengan pengaturan tmux.conf ini:

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

Namun, passing TZ=footidak bekerja di dalam #(…). (Saya mendapatkan server datebukan apa yang saya harapkan). Ada saran?

Jawaban:


16

Tmux memperluas format waktu dengan strftimedi status-leftdan status-rightsebelum mengembang #(…)dan urutan pelarian tajam lainnya. Jadi %H:%Mdiperluas ke waktu lokal terlebih dahulu, dan dateberjalan dengan argumen yang sudah numerik.

Gandakan tanda persen.

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

Saya tidak terbiasa dengan tmux tapi saya kira masalahnya adalah #()tidak bekerja dengan cara yang sama seperti $()di shell.

Masalahnya dapat diselesaikan dengan memaksa penggunaan shell:

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

Sayangnya ini tidak berfungsi (pada tmux 1.6, Gentoo). Masih mencetak tanggal UTC.
Excalibur

@ Excalibur Cukup aneh. Coba buat wrapperscript (with TZ=Europe/Belgrade date +%H:%M) dan#(/path/to/wrapperscript)
Hauke ​​Laging

Ya, solusi itu terjadi pada saya. Meskipun karena tmux.conf ini diatur secara dinamis menggunakan Chef, saya ragu untuk menambahkan dependensi eksternal. Mungkin saya harus mengajukan masalah dengan tmux. Terimakasih Meskipun!
Excalibur
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.