0%

【Linux】终端提示符自定义

以下设置为了在每次启动终端时都生效,需要修改 .bashrc

ls彩色命令

1
2
3
4
export LS_OPTIONS='--color=auto'
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'

彩色提示符

1
export PS1="\[\e[0;38;5;154m\][\[\e[1;38;5;46m\]\A\[\e[0;38;5;154m\]] \[\e[1;38;5;196m\]\u\[\e[38;5;202m\]@\[\e[38;5;208m\]\h \[\e[38;5;220m\]\w \[\e[38;5;46m\]\$\[\e[0m\] "

说明:
1. 配置PS变量常用参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
参数描述

\d 代表日期,格式为weekday month date,例如:”Mon Aug 1
\H 完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h 仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t 显示时间为24小时格式,如:HH:MM:SS
\T 显示时间为12小时格式
\A 显示时间为24小时格式:HH:MM
\u 当前用户的账号名称
\v BASH的版本信息
\w 完整的工作目录名称。家目录会以 ~代替
\W 利用basename取得工作目录名称,所以只会列出最后一个目录
\# 下达的第几个命令
\$ 提示字符,如果是root时,提示符为:# ,普通用户则为:$
\[ 字符”[“
\] 字符”]”
\! 命令行动态统计历史命令次数

  1. 表示色彩的格式 使用 88/256 色设置方案进行设置。色谱表如下:
|600

使用ESC转义字符串来格式化后续文本的颜色。 在bash中,ESC转义可以用以下三种方式表示:

1
2
3
- `\e`    
- `\033`
- `\x1B`

举例说明:用\[\e[0;38;5;105m\]表示某种颜色,其中开始与结束时的\[,\]均为转义,\e[0表示不使用特殊格式。38;5; ColorNumber表示前景颜色(字体颜色),如果是背景颜色用48;5; ColorNumber来表示。

1
2
3
4
5
6
7
8
9
特殊格式

0 关闭
1 粗体/高亮
2 灰暗
4 下划线
5 闪烁
7 反白 (交换前景与背景颜色)
8 隐藏 (用于密码显示)
  1. 实例演示 效果如下: 说明:
    ①显示左右括号[],用颜色\[\e[0;38;5;154m\]表示,'0':不使用特殊格式。
    ②显示时间\A,格式为HH:MM,用颜色\[\e[1;38;5;46m\]表示,'1':粗体高亮。
    ③显示用户名\u, 用颜色\[\e[1;38;5;196m\]表示。
    ④显示@,用颜色\[\e[38;5;202m\]表示,因为从用户名之后,后续文本均使用粗体高亮,就不在其中使用特殊格式数字,除非有格式上的变化。
    ⑤显示主机名\h,用颜色\[\e[38;5;208m\]表示。
    ⑥显示完整工作路径\w,用颜色\[\e[38;5;220m\]表示,如果仅想显示当前目录,可以用\W
    ⑦显示提示符\$,用颜色\[\e[38;5;46m\]表示。
    ⑧停止使用调色,用\e[0m表示,这里使用了\33[0m,作用完全相同,仅是为了测试。

  2. Conda虚拟环境激活后的提示符前缀处理。
    前缀为(base)(激活后的环境名),默认为系统前景色。如何对其也进行定制呢?

步骤(1)

在终端 shell 中输入以下命令,使conda不再显示提示符前缀。

1
conda config --set changeps1 false
若想再开启,输入
1
conda config --set changeps1 true
步骤(2)

继续修改环境变量PS1。用\[\e[0;38;5;105m\](\[\e[1;38;5;141m\]\${CONDA_DEFAULT_ENV}\[\e[0;38;5;105m\])用来自定义Conda环境提示符前缀。完整PS1的定义如下:

1
export PS1="\[\e[0;38;5;105m\](\[\e[1;38;5;141m\]\${CONDA_DEFAULT_ENV}\[\e[0;38;5;105m\]) \[\e[0;38;5;154m\][\[\e[1;38;5;46m\]\A\[\e[0;38;5;154m\]] \[\e[1;38;5;196m\]\u\[\e[38;5;202m\]@\[\e[38;5;208m\]\h \[\e[38;5;220m\]\w \[\e[38;5;46m\]\$\[\e[0m\] "
效果为:

参考

  1. Bash prompt generator with colors (robotmoon.com)
  2. What color codes can I use in my Bash PS1 prompt?
  3. terminal - bash PS1 256 colors with bold
  4. bash:tip_colors_and_formatting