Цитирование сложной awk-программы в tmux.conf

Пользователь Freenode #tmux спросил:

  1. Как мы можем правильно избежать этой команды оболочки, используя GNU awk для set -g tmux status-right?

    sensors | awk '/^Physical id 0:/ { s = $4; sub(/^+/, "", s); print s; exit }'
    

    Результат должен быть 45.0°C.

  2. Кроме того, как сделать так, чтобы он обновлялся каждые 30 секунд?

Вывод sensors:

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +45.0°C  (high = +80.0°C, crit = +100.0°C)
...

person Thomas Hughes    schedule 30.06.2015    source источник


Ответы (1)


Настройка status-right

Цитирование командой оболочки #( ) в tmux

Цитирование в tmux #( ) является сложным, потому что содержимое проверено дважды.

По этой причине давайте упростим программу gawk, чтобы:

sensors | awk '/^Physical id 0:/ { sub(/^+/, "", $4); print $4; exit }'

Теперь подключаем его к .tmux.conf:

set-option -g status-right "#( sensors | awk \\' /Physical id 0:/ {  sub\\(/\+/,\"\",$4\\); print \$4; exit }  \\')"

Но это ужасно сложно прочитать и изменить в следующий раз, когда вы возитесь ...

Более простая альтернатива

Самое простое решение - поместить команду оболочки в файл и вызвать ее из tmux.

~ / bin / tmux-status.bash:

#!/bin/bash
sensors | awk '/^Physical id 0:/ { sub(/^+/, "", $4); print $4; exit }'

~ / .tmux.conf:

set-option -g status-right "#(bash ~/bin/tmux-status.bash)"

Сделать обновление каждые 30 секунд

set-option -g status-interval 30

  

Смотрите также

person Thomas Hughes    schedule 30.06.2015
comment
exit в сценарии awk, вероятно, не стоит отбрасывать (хотя это зависит от того, насколько велик вывод sensors и где эта строка появляется в нем). - person Etan Reisner; 01.07.2015
comment
@EtanReisner, правда, правда ... в данном случае это был короткий файл. Я отправил правку, чтобы вернуть ее. - person Thomas Hughes; 01.07.2015