1

我正在尝试在 tmux 状态行的右侧显示我的 ipaddress 和日期。我有以下命令:

set -g status-right "#[fg-cyan]#(ifconfig | awk '$1 == "inet" { print $2 }') #[fg=cyan]%d %b %R"

它显示日期,但不显示 IP 地址。我没有从 Tmux 收到任何错误,所以我不确定出了什么问题。

任何帮助表示赞赏!

4

1 回答 1

2

检查实际最终设置的值:

tmux show-option -g | grep status-right

我希望您会发现 . 周围没有双引号inet。双引号解析不认为#()语法是特殊的(与"$()"shell 不同,您可以在命令替换中简单地使用双引号)。因此,解析分三部分完成:

  • "#[fg-cyan]#(ifconfig | awk '$1 == "
  • inet
  • " { print $2 }') #[fg=cyan]%d %b %R"

这些被连接到这个:

#[fg-cyan]#(ifconfig | awk '$1 == inet { print $2 }') #[fg=cyan]%d %b %R

作为一个awk程序,这最终会检查$1一个未设置的变量inet,而不是文字 string "inet"awk可能不会抱怨,但没有行会匹配。

您可以转义双引号以让它们传递到最终字符串中:

set -g status-right "#[fg-cyan]#(ifconfig | awk '$1 == \"inet\" { print $2 }') #[fg=cyan]%d %b %R"

当我设置这个时,我只是看到127.0.0.1;您可能想要添加 a|tail -1以使用最后一行而不是第一行。

另外两个项目:

  • 你有[fg-而不是[fg=, 和
  • 因为您在两个地方都指定了相同的颜色,所以您可以省略第二个。

因此:

set -g status-right "#[fg=cyan]#(ifconfig | awk '$1 == \"inet\" { print $2 }'|tail -1) %d %b %R"
于 2013-03-05T09:45:34.777 回答