当前位置: 首页 >快乐分享>linux、mac shell终端连接前缀字体PS1颜色样式显示设置 正确写法

linux、mac shell终端连接前缀字体PS1颜色样式显示设置 正确写法

在使用终端连接服务器的时候,看别人可以调的很迷人,那我们怎么正确的调这个颜色呢?强调下是正确两字,网上很多人也写过,但笔者看过很多网上写法都是不对的(盲人摸象),有的错误写法会让后续输入代码过长时覆盖前缀、乱码等诸多问题。

原理:这块字体内容的显示依靠系统读取文件bashrc来实现的,不同的系统可能会有差异,linux默认情况是读取用户下的~/.bashrc文件来实现,然而默认的~/.bashrc文件里面写了包含/etc/bashrc,两者存在关联性。mac os x没有~/.bashrc这个目录,mac直接读取/etc/bashrc文件来实现。下面将会分别讲解centos、ubuntu、mac os x等系统配置。

首先描述下linux登录过程中加载这块配置文件的大概顺序:

/etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc]

1、PS1语法及代码讲解

  • \ : #转义符,将普通的字符转换为系统能够识别的语言(通过翻译后转为ASCII字符)
  • \d :#代表日期,格式为weekday month date,例如:”Mon Aug 1”
  • \H :#完整的主机名称
  • \h :#仅取主机的第一个名字
  • \t :#显示时间为24小时格式,如:HH:MM:SS
  • \T :#显示时间为12小时格式
  • \A :#显示时间为24小时格式:HH:MM
  • \u :#当前用户的账号名称
  • \v :#BASH的版本信息
  • \w :#完整的工作目录名称
  • \W :#利用basename取得工作目录名称,所以只会列出最后一个目录
  • \# :#下达的第几个命令
  • \$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$

正确的基础语法格式(包含样式和颜色):

PS1='\[\e[F;Bm\]跟随参数'

用法举例(推荐格式这样写):

PS1='\[\e[F;Bm\]\u \[\e[F;Bm\]\$ \[\e[0m\]'

# 解释:此写法包含三段, \[\e[F;Bm\]\u 指定样式的用户名、\[\e[34;3m\]\$ 指定样式的提示符、\[\e[0m\] 意思是后续的代码为shell终端默认样式且让每段分别单独有意义,三段之间用空格分开,PS1=后面必须为单引号 PS1='代码'

\[\e[0m\]

用法讲解:\[\e[0m\] 这段代码意义重大,如果代码中存在多段属性,只有一段属性用到了“样式颜色”语法\[\e[F;Bm\],这种情况如果代码结尾没有\[\e[0m\],那么其他例如\u \w \h...之类的属性全部重置为同一种样式颜色,当有两种属性用到了样式颜色语法才得以区分开;如果代码末尾加了\[\e[0m\] ,则显示的效果为用到样式颜色语法的那段属性的内容为有效果,没有用到样式颜色语法的属性即为shell终端默认样式,所以\[\e[0m\] 相对而言是有全局性的,有的网友说是“开关”我觉得是不恰当的。大家可以进行多种写法测试下便明白了。

如果你不要任何样式和颜色,那就按如下例子最最最基础的写法就可以了:

PS1='\u@\h\w \$'

# 解释:显示用户名@主机名当前工作目录空格提示符。

2、字体颜色代码

  • F   Bm  字体颜色

  • 30 40 黑色
  • 31 41 红色
  • 32 42 绿色
  • 33 43 黄色
  • 34 44 蓝色
  • 35 45 紫红色
  • 36 46 青蓝色
  • 37 47 白色

用法举例:

PS1='\[\e[31;40m\]\u '

# 解释:设置当前登录的用户名为红色,后面有空格隔开,回引号前方有个空格,这样写的话,后面输入的代码会跟前面的颜色相同,后续会讲到怎么设置输入的字符颜色。

字体样式代码

  • Bm 字体效果

  • 0m 默认白色,关闭这个PS1效果
  • 1m 加粗、高亮
  • 3m 斜体
  • 4m 下划线
  • 5m 闪烁
  • 7m 背景色与前景色反转
  • 8m 背景色透明与前景色反转,相当于填充看不见字了
  • 10m 不加粗,普通字体

3、临时修改(退出终端失效)

可利用export命令测试代码是否正确,正确的话再拿来用。

笔者自定义的样式(推荐使用):

export PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'

#解释:用户名黄色@主机名绿色:当前路径空格$空格占位符,后续输入字符会shell终端默认样式。

如果特定的字符不想随前方代码样式,可以这样写:

PS1='\[\e[F;Bm\]特定字符'

用法举例:PS1='\[\e[31;1m\]@ '

# 解释:将“@”这个符号用红色、加粗、高亮的样式显示/p>

4、永久修改

(1)centos系统:

使用root登录,修改/etc/bashrc ,

vim /etc/bashrc

然后将以下代码加入到最下面并保存退出:

PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'

然后重新加载下配置文件使其立刻生效,也可以客户端重连验证

source /etc/bashrc

(2)ubuntu系统:

注意:ubuntu需要修改2个文件,修改/etc/bash.bashrc文件(这个不改,新用户在系统重新启动后是无法加载到效果的),且修改登录的用户的 /home/user/ 的 ~/.bashrc 文件 。

<1> 、使用root用户登录,编辑 /etc/bash.bashrc 文件,

vim /etc/bash.bashrc

将以下这个位置的PS1注释掉,将截图下方的代码加入到这个位置并保存退出:

PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'

编辑 root 家目录下的 ~/.bashrc 文件,

vim ~/.bashrc

将以下代码加入到最下面并保存退出:

PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'

然后重新加载下配置文件使其立刻生效,也可以客户端重连验证。

source ~/.bashrc

<2> 、如果是其他用户要用这个效果,除了以上<1>中修改 /etc/bash.bashrc 之外,还要从当前~/.bashrc复制到新用户的 /home/user/.bashrc 文件中(不复制也可以,那就手动按<1>中去修改 ~/.bashrc ),ubuntu默认没有自动追加到新用户的配置中,让其他用户也生效需要以下操作 :

cp ~/.bashrc /home/user/.bashrc

然后可以切换到那个user用户下登录验证是否生效。

(3)mac os x系统:

使用root登录,修改/etc/bashrc

vim /etc/bashrc

sudo -i    # 切换到root用户,需输入root密码

将以下代码加入到以下图中合适位置,原来的PS1注释掉:

PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'

然后重新加载下配置文件使其立刻生效,也可以客户端重连验证

source /etc/bashrc

 

如笔者讲的不对的地方,可联系站长邮箱反馈,欢迎交流!