我试图改变我的终端提示符的颜色为绿色文本的用户在开始和白色的~
目前,我的.bash_profile文件以以下方式配置,为用户名提供黄色,为~
提供粉红色
PS1='e[33;1mu@h: e[31mWe[0m$'
有谁知道如何修改上面的颜色,以改变为绿色和白色?
PS1='e[32;1mu@h: e[37mWe[0m$'
[
后面的数字为色码。
您希望更改ANSI转义序列,特别是颜色。
e[...m
采用一个分号分隔的代码列表来操作下面文本的显示方式。33
表示黄色前景文本,1
表示粗体文本,31
表示红色前景文本,0将所有值(前景和背景颜色,样式等)重置为终端默认值。
# Make text yellow and bold, then make it red (keeping it bold)
# and finally restore the default
PS1='e[33;1mu@h: e[31mWe[0m$'
要使用绿/白代替黄/红,将33改为32,将31改为37。另外,请确保在[...]
中包含不占用屏幕空间的字符,以便shell可以正确地确定提示符的长度。
PS1='[e[32;1m]u@h: [e[37m]W[e[0m]$'
这假设你的终端理解ANSI转义序列;更可移植的方法是使用tput
输出实际终端使用的代码:
PS1='[$(tput bold; tput setaf 2)u@h: [$(tput setaf y)]W$(tput sgr0)$ '
顺便说一句,
zsh
使这更容易;它具有内置转义,用于以与终端无关的方式更改颜色:
# 1. Everything between %B and %b is in bold
# 2. Everything between %F{x} and %f is in a different color;
# x can be a color name, and you can switch from one
# color to another without using %f
# 3. zsh is smart enough to account for built-in escapes when
# computing the prompt lenght, so no equivalent of [...]
# is needed
# 4. %n is the same as u
# 5. %m is the same as h
# 6. %~ is roughly the same as W
# 7. %# is roughly the same as $
PS1='%B%F{green}%n@%m: %F{white}%~%b%f%# '
与其他方法相比,这种方法有两个优点:
- 使用
[
和' ']to prevent character count problems with
CTRL-A '编辑转义序列 -
它使用
tput
来改变颜色,这样它就更能自我记录正在做的事情了:PS1='[$(tput setaf 2)]u@h: [$(tput setaf 7)]W[$(tput sgr0)]$'
要更改每个部分的提示符颜色,请尝试使用以下简单的repo:
https://github.com/joenmarz/bashrc-alias您可以更改每个提示部分的颜色,如:
- 用户名
- "@"符号
- 间>
- 括号符号'['和']'
- 根指示符(#表示root用户),($表示非root用户)
你的提示符看起来像:
[username@hostname 00:00 AM ~/working/directory $]
转到该文件的第33行(bashrc-alias/.bashrc)自定义每个提示部分的颜色变量:
- open_brk_color
- closed_brk_color
- at_color ,,,,,改变<我> ‘@’标志颜色我>
- username_color
- hostname_color hostname color
- time_color 时间提示颜色
- wd_color 更改工作目录提示符 color
- ri_color 更改根指示器颜色
如何安装
- 将此存储库克隆到您的主目录
git clone https://github.com/joenmarz/bashrc-alias
- 在现有的~/中添加文件路径。bash文件:
. /home/$USER/bashrc-alias/aliases
- 刷新你的.bashrc源,输入:
source ~/.bashrc
我通过在每个提示部分添加一些变量来使它更简单。