一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 3994|回复: 2

环境变量 PS1

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

* m. w6 O2 Q; y' g8 ~环境变量 PS1
3 X6 y3 R" f* L0 N0 I以 Bash shell 为例
+ w# n8 l, A- t0 M; P% Q一般默认的情况下.bashrc里面应该是:
3 q3 i2 Y7 _' Q! ~6 p" i6 a$ D2 \    ~/.bashrc
! _/ H8 ?' U0 K6 E4 d0 N     export    PS1=' \u@\h:\w\$ ': {1 r. T: J* K5 N3 r7 _- J
     上面的意思是:用户@主机:当前目录 $# O3 r9 T8 {8 j/ ^5 \) o
转义序列. j2 y; x* k6 v* S5 X( L' M0 U6 ?
    要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制指令。 转义序列通常都是以 ESC 开头(这也是它的命名原因)。 在 shell 里表示为 ^[ .这种表示法需要一点时间去适应, 也可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27,等于用八进制表示的 033)2 B' B& D: J# p! L
代码:
: i4 F  Q  R1 S& Q5 h. N0 o        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 \]"7 \) U" J# n/ h* J
最外边的"\[    \]"是为了把转义序列的字符串括起来,防止转义序列的文本显示在 shell 里占用太多的空间。
$ v# [4 \9 Z7 x+ ?& y1 d: N  d\033 声明了转义序列的开始,然后是 [ 开始定义颜色。 后面的 0 定义了默认的字体宽度,接着的中间的数字定义字符颜色。最后面的数字定义了字符背景色。字母m是定义本身所必须的,字母m后面的字符就是你想改变的字符了。6 m  X3 e  K, q; W6 }8 A
可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。 他们对应的颜色代码是:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。
  r& j$ U' t4 b9 w用同样色方法设置背景色,不过要把第一个数字“3”替换成“4”, 例如 40、41、42、43、44、45、46、47。  G0 _3 j: U; ]) w! p
比如上面我的定义中: 最后显示的结果是在$号之前的字符全部用一个浅绿色的中括弧扩起来。$字符 显示为红色。后面的输入显示为高亮浅绿色。在括弧里面,用户名@主机显示为深绿色,路径显示为洋红。
' p- I1 y. P: x2 H$ q, U用代码解释:0 _4 U+ {7 p& j9 e1 f
Ps1 ="\[                                                  -------------> 最外面的括弧
% H9 F1 g. R# H" [4 z0 B8 P                 \033[1;32;40m[: E. ?, f- f5 c9 U
                                               ----> 定义最右边的" [ " ;1:字体宽度,好像有加亮功能。
# ?! |+ y' N/ r3 b                                                                                              32:字符颜色。32表示绿色。
; B9 x% u6 U# }) N                                                                                              40:背景色,40表示黑色。8 d" h, a" {1 z; S
                \033[0;32;40m\u@\h:# P3 K0 ~4 ?: g' T& w
                                                --------->定义右边的 \u@\h:  这几个字符颜色。9 i3 e( v# v. w: o; b6 L
                                                                                            0: 默认字体宽度。
5 x$ P8 }- s/ p$ n6 C& C( C* L                                                                                             32:字符颜色。绿色。
+ j; l  q6 e, F& t1 n                                                                                             40:  背景颜色。黑色。
  f* W+ r3 F9 @0 X/ M                   \033[1;35;40m\w
" e$ j" e" {4 p) O& l# E                                                  ---------> 定义右边的 \w  (路径颜色) 。& W5 A/ j. `0 i+ H1 K' a' ^0 r; ]% r
                                                                                             1:字符宽度。加亮。
  d$ u. N! ^1 P3 D7 Q* }                                                                                             35:字符颜色。洋红。
( n( P9 r. f: U3 C9 f+ K1 l8 F# D# B                                                                                             40:背景色。黑色。
( Z% L! \/ o3 G: k; u: [- x6 e0 w                     \033[1;32;40m]5 D# _8 D1 U6 }- ]6 [9 K  d$ |
                                                  ---------> 定义右边的  ]  字符。跟前面的   [   字符使用同一效果。
  E$ K4 R, G- v9 H! p& t% t                     \033[1;31;40m\$
4 _; y9 G# s' Z$ E- M                                                   ---------> 定义了  $  字符 为红色。转义字符,所以前面加了 \ .% _2 d! w; G# s* @5 v  p7 l) }8 B, q
                                                                       颜色都跟前面差不多。相信大家都发现规律了。
/ O0 @5 W% q9 k3 h                      \033[1;32;40m
! k5 F3 ?) `: R/ f7 N9 W/ [                                                  ----------> 这个定义了你在命令行要输入命令显示的颜色。
  l( L; y$ c* D4 t                       \]"
# ?/ I, k, E* `+ e& y  x+ w* D                                                  -----------> 字符串结束括弧。1 H, j' h- o( g4 C2 ]4 L# ]. e
这个就是上面例子的详细定义内容。+ u( S" R' X1 v7 u9 v
其 实我的是没有关闭颜色转义序列,让自己输入的字符也改变颜色,整天看这黑白屏幕不爽哇!!如果不想改变输入颜色的话,用 \033[0m 关闭转义序列, \033[0m 是 shell 的默认颜色。按照上面的例子来说就是在 \]" 前面加上 \033[0m 即可。
" O/ _" g0 j. O9 F( p4 [够简单吧?
9 E0 F3 @$ L: m; e0 f  ?1 q看看root下的shell:
' Y& x1 |) a7 T  P, z2 l1 OrootshowG
% j& O* D: |$ m2 d  p% ]' I这个也不错,是 Nico Golde的:
- C( q5 w& h( E% G! tPS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]". j- P  y7 i+ Z$ _% \

5 u6 Q  Q% @; E
发表于 2017-1-5 20:09 | 显示全部楼层
用linux的,一般不会搞得那么复杂
回复

使用道具 举报

 楼主| 发表于 2017-1-5 23:30 | 显示全部楼层
devcang 发表于 2017-1-5 20:09
, J% \1 t6 u  p3 H9 Q用linux的,一般不会搞得那么复杂
# k+ V# F0 h4 k9 y
没关系有兴趣的可以多了解一下+ X2 K% A; O0 R2 ?) [
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-4-17 16:28 , Processed in 0.035992 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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