为什么 Byobu 自定义状态通知代码无法以彩色显示?

BuZ*_*ain 4 server bash scripts byobu

下面的代码在 Bash 中运行良好,并显示具有适当绿色背景颜色的文本,但是当我将其添加到~/.byobu/bin/文件夹时,它会显示转义字符。类似于[42m[1mAPL:30.345 (B[m

#!/bin/sh
echo `tput setab 2;tput bold`AAPL:`curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&f=sl1d1t1c1ohgv&e=.csv' | cut -d, -f2;tput sgr0`
Run Code Online (Sandbox Code Playgroud)

小智 5

如果使用tmuxbyobu的后端,您将需要使用不同的颜色代码格式。幸运的是,它没有screen格式那么复杂。

要设置颜色,请使用#[<color and attribute codes>]. 例子:

  • #[default]:恢复默认颜色(在自定义状态结束时使用)。
  • #[fg=red]: 将前景色设置为红色。
  • #[fg=#ff0000]: 将前景色设置为#ff0000。只接受小写——FF0000不起作用。
  • #[bg=black]: 使背景变黑。
  • #[fg=bold]: 使文本加粗。请参阅下文了解更多信息。
  • #[reverse]: 交换前景色/背景色。

您可以将它们组合起来,例如#[fg=white,bold,bg=black]

命名颜色:black, red, green, yellow, blue, magenta, cyan, white, black, brightblack, brightred, brightgreen, brightyellow, brightblue, brightmagenta, brightcyan,brightwhite

属性:dim, underscore, bold, reverse, standout, blinking, hidden,italics

您还可以使用环境变量$BYOBU_LIGHT$BYOBU_DARK$BYOBU_ACCENT,和$BYOBU_HIGHLIGHT为颜色。


要使用它,请创建一个包含~/.byobu/bin/1_hello以下内容的文件,并使其可执行。

#!/bin/sh
echo "#[reverse]Hello world#[default]"
Run Code Online (Sandbox Code Playgroud)

这应该创建一个黑白状态通知,上面写着“Hello world”。


byobu 的一些自定义状态通知

以下是两个示例自定义状态栏组件,以及生成它们的代码:

  • #[fg=#aa77cc,bg=#222222] @XXX.XX #[default]
  • #[fg=white,bg=black] ? ?X #[default]

不过,此信息可能仅在您使用tmux启用颜色的外壳时才有效:)


(来源: /usr/lib/byobu/include/colors, /usr/lib/byobu/include/shutil)


qbi*_*qbi 1

您需要 screen 中的其他颜色说明符(请参阅screen(1) 的联机帮助页)。因此,首先您应该将值保存在变量中:

AAPL=$(curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&f=sl1d1t1c1ohgv&=.csv' | cut -d, -f2)
Run Code Online (Sandbox Code Playgroud)

在第二步中,您可以使用以下命令输出它printf

printf "\005{= b}%s%s\005{-}" "AAPL: " "$AAPL"
Run Code Online (Sandbox Code Playgroud)