一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3179|回复: 2
收起左侧

环境变量 PS1

[复制链接]
发表于 2017-1-5 17:34 | 显示全部楼层 |阅读模式

! G' D2 v. i' ^环境变量 PS1
9 ^- L0 Z. u& U9 Y# o以 Bash shell 为例; ~# ], x( |: L3 X: \6 b
一般默认的情况下.bashrc里面应该是:
. C# d% O9 T' \( ?1 N# D    ~/.bashrc( z2 x, O% b$ Q# B0 V5 u
     export    PS1=' \u@\h:\w\$ '
1 a" I, u4 I6 s- J( |8 z$ v     上面的意思是:用户@主机:当前目录 $
' `: H3 {% J  `转义序列! i  K( j% @" f3 e) S3 W
    要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制指令。 转义序列通常都是以 ESC 开头(这也是它的命名原因)。 在 shell 里表示为 ^[ .这种表示法需要一点时间去适应, 也可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27,等于用八进制表示的 033)
5 }$ ]! u7 j* I$ v, p, {代码:9 u9 P& J' u4 y8 [0 |
        PS1="\[\033[1;32;40m[\033[0;32;40m\u@\h:\033[1;35;40m\w\033[1;32;40m]\033[1;31;40m\$\033[1;32;40m \]"
8 k% T# p$ W: ^8 N最外边的"\[    \]"是为了把转义序列的字符串括起来,防止转义序列的文本显示在 shell 里占用太多的空间。
1 M4 n+ u. n/ N# u\033 声明了转义序列的开始,然后是 [ 开始定义颜色。 后面的 0 定义了默认的字体宽度,接着的中间的数字定义字符颜色。最后面的数字定义了字符背景色。字母m是定义本身所必须的,字母m后面的字符就是你想改变的字符了。
. ~6 T8 C- c! n/ u4 B' z/ f 可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。 他们对应的颜色代码是:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。
0 t) v# Q/ ^2 I9 s! G/ |4 o7 V6 C用同样色方法设置背景色,不过要把第一个数字“3”替换成“4”, 例如 40、41、42、43、44、45、46、47。
) c4 T1 M" b+ _  C% Q比如上面我的定义中: 最后显示的结果是在$号之前的字符全部用一个浅绿色的中括弧扩起来。$字符 显示为红色。后面的输入显示为高亮浅绿色。在括弧里面,用户名@主机显示为深绿色,路径显示为洋红。
9 n. ?$ o, Y% ^0 f1 `用代码解释:
" u, M9 {" P+ TPs1 ="\[                                                  -------------> 最外面的括弧& f1 D0 G; ]# ]. `' j% ^
                 \033[1;32;40m[2 p8 w% M$ p4 x8 u
                                               ----> 定义最右边的" [ " ;1:字体宽度,好像有加亮功能。* Y9 c3 ]0 r$ E- R
                                                                                              32:字符颜色。32表示绿色。6 U8 x' A* B1 N% q% P
                                                                                              40:背景色,40表示黑色。
( B3 R8 b3 v& X# Q                \033[0;32;40m\u@\h:; X' N& d  M4 o% ]* p% `
                                                --------->定义右边的 \u@\h:  这几个字符颜色。4 [5 k8 m7 X2 M/ e) Q
                                                                                            0: 默认字体宽度。
0 D' N- {. g% s; G4 b: c. y) V                                                                                             32:字符颜色。绿色。' i% _% d( D; X% {; m
                                                                                             40:  背景颜色。黑色。" w; O6 O' \! g2 a$ J- l
                   \033[1;35;40m\w% ^( {4 m2 X) U5 L
                                                  ---------> 定义右边的 \w  (路径颜色) 。
2 k2 b7 O* N/ y                                                                                             1:字符宽度。加亮。9 e, o3 {$ C0 E. C& ]  P
                                                                                             35:字符颜色。洋红。
) W+ s% g( Q. d                                                                                             40:背景色。黑色。
  O$ |7 S1 C6 Z2 D6 y" g+ ^                     \033[1;32;40m], b9 L+ S- l- x1 V" D
                                                  ---------> 定义右边的  ]  字符。跟前面的   [   字符使用同一效果。
- `5 m! a( v& n8 R4 T# o                     \033[1;31;40m\$
  n) t! c2 [9 d+ d" G6 y9 [6 S                                                   ---------> 定义了  $  字符 为红色。转义字符,所以前面加了 \ .
' m' E! K' ?6 X) |. ?' S2 B8 k. U                                                                       颜色都跟前面差不多。相信大家都发现规律了。
; s. t. g3 G' G8 L& S                      \033[1;32;40m
& O, H$ J% @! ]7 D' N( i' G                                                  ----------> 这个定义了你在命令行要输入命令显示的颜色。/ p" Y1 z) d6 v3 l
                       \]"" l) E, N* i' w6 M/ I2 U
                                                  -----------> 字符串结束括弧。5 t5 C1 t% U0 t! y" {
这个就是上面例子的详细定义内容。
8 Z/ X+ w$ ^+ {其 实我的是没有关闭颜色转义序列,让自己输入的字符也改变颜色,整天看这黑白屏幕不爽哇!!如果不想改变输入颜色的话,用 \033[0m 关闭转义序列, \033[0m 是 shell 的默认颜色。按照上面的例子来说就是在 \]" 前面加上 \033[0m 即可。
9 @5 l  h# U5 o' I8 A7 s够简单吧?. t5 C3 {& j! U
看看root下的shell:
. Z) D9 b2 }  G) _( y: {rootshowG
  b4 Y9 O* b, T* i9 J这个也不错,是 Nico Golde的:+ u$ t' J  P  k2 L
PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"
" f* T+ r6 P( q( b0 ~, }6 P
4 k3 o) D1 P5 T8 b7 g! i1 p
发表于 2017-1-5 20:09 | 显示全部楼层
用linux的,一般不会搞得那么复杂
 楼主| 发表于 2017-1-5 23:30 | 显示全部楼层
devcang 发表于 2017-1-5 20:09% Z0 f' L. R/ @4 C' {% g- m
用linux的,一般不会搞得那么复杂
$ s6 d# b; h( T+ t1 U
没关系有兴趣的可以多了解一下+ B$ p3 n) b6 r: k0 C* r

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-4-28 03:36 , Processed in 0.049739 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表