我无法将颜色转义码打印到终端

Aka*_*all 3 linux terminal rust

当我运行这个脚本时:

fn main() {
    // \033[0;31m <- Red
    // \033[0m <- No Color
    println!("\033[0;31mSO\033[0m")
}
Run Code Online (Sandbox Code Playgroud)

我希望得到

SO #in red letters
Run Code Online (Sandbox Code Playgroud)

但是,我得到:

33[0;31mSO33[0m
Run Code Online (Sandbox Code Playgroud)

当我在Go或Python中运行类似的脚本时,我得到了预期的输出.到底是怎么回事?我错过了什么?怎么解决这个问题?

我在用:

$ rustc --version
rustc 1.3.0 (9a92aaf19 2015-09-15)
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty
Run Code Online (Sandbox Code Playgroud)

ymo*_*nad 9

Rust 1.3.0似乎不支持八进制转义字符串,例如\033.相反,您可以使用十六进制转义字符串\x1b.

fn main(){
  println!("\x1b[0;31mSO\x1b[0m")
}
Run Code Online (Sandbox Code Playgroud)

  • 天哪,我到处寻找这个问题的答案。在其他地方你都会发现诸如“使用这个板条箱”或“使用那个板条箱”之类的废话。这是这个问题的正确答案。非常感谢您直接回答问题! (6认同)
  • FWIW,人们之所以将你引导到一个板条箱,是为了让你的颜色可以在 Windows 上工作。 (3认同)
  • 我没有说或暗示他们这样做了。 (3认同)
  • @BurntSushi5 不过,并不是每个人都关心 Windows。 (2认同)