tmux没有颜色 | linux PS1变量详解

最新办法

编辑~/.tmux.conf

1
set -g default-terminal "screen-256color"

一键命令:

1
echo set -g default-terminal \"screen-256color\" >> ~/.tmux.conf

以下原文

以ubuntu为例

编辑~/.bashrc

下面这段改一下:

1
2
3
4
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac

添加一个screen*,如下:

1
2
3
4
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color|screen*) color_prompt=yes;;
esac

如果只是tmux没有颜色,到这里就可以结束了。下面是其他的。

一点私货

更改ssh连接时的控制台标题栏:

主要是通过更改环境变量PS1来实现的

默认的PS1

1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

颜色代码格式:

1
echo -e "\033[前景色值;背景色值m 文本\033[0m"

用m来结束一段转义序列。前景色值和背景色值使用分号间隔,不分先后,因为两种值的颜色范围不一样,比如 黑色 30 40 。另外分开写同样生效,如 \033[44m\033[32m

各类数字代表的含义:

功能类:

0m 关闭所有属性

1m 设置高亮度

4m 下划线

5m 闪烁

7m 反显

8m 消隐

颜色类:

背景色:40-47,前景色:30-37

前景色就是字体颜色

|背景色 |前景色|

|-|-|

|40:黑色 | 30:黑色

41:红色 | 31:红色

42:绿色 |32:绿色

43:黄色 |33:黄色

44:蓝色 |34:蓝色

45:紫色 |35:紫色

46:天蓝 |36:天蓝

47:白色 |37:白色

然后可以分析PS1了。

首先,所有非打印字符需要放在\[\]之间,\033或者\e来开启一段转义字符。\a作为字符串终止符。

先看第一段:

\[\e]0;\u@233: \w\a\]

两边的\[\]是包裹这段非打印字符的

\e开启一段转义序列。]表示之后的数字代表一个Operating system command(OSC)0表示设置终端标题,;后面就是终端标题,最后用字符串终止符\a结束标题。

可以参考:console_codes

image

剩下的部分就好理解了,都是设置终端输入提示的,设置了不同的颜色等等。

主机名

用户名

: 工作目录

剩下的详见Controlling-the-Prompt

最后一个$是输入的标志符号


tmux没有颜色 | linux PS1变量详解
https://jcdu.top/2022/11/03/tmux没有颜色 _ linux PS1变量详解/
作者
horizon86
发布于
2022年11月3日
许可协议