在tmux.conf中引用一个复杂的awk程序

时间:2015-06-30 22:27:52

标签: awk escaping tmux gawk quoting

Freenode上的用户#tmux问:

  1. 如何使用set -g tmux status-right的GNU awk正确转义此shell命令?

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

    结果应为45.0°C

  2. 另外,我们如何才能每30秒更新一次?

  3. sensors的输出:

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

1 个答案:

答案 0 :(得分:3)

设置状态右侧

使用tmux

中的shell命令#( )进行引用

引用在tmux #( )中很复杂,因为内容为evaluated twice

出于这个原因,我们将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 }  \\')"

但是,下次修补时,阅读和更改非常复杂......

更容易的替代方案

最简单的解决方案是将shell命令放入文件并从tmux中调用它。

〜/斌/ 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

另见