一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 3760|回复: 2

环境变量 PS1

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

3 o$ h# `* r9 J+ Y* s" @% r环境变量 PS1
! v" }* D* A9 {+ t/ s% g以 Bash shell 为例
1 A% J2 V: P. W8 A8 m: @2 J一般默认的情况下.bashrc里面应该是:* ?& Q: e5 i; O5 v# l( P
    ~/.bashrc+ M4 d: Q" K! q9 J) [1 I. D
     export    PS1=' \u@\h:\w\$ '4 L# Z# I0 v) @1 L5 e0 a0 h/ A
     上面的意思是:用户@主机:当前目录 $0 u( t& G0 o+ m) q0 b$ X& Y* _
转义序列8 B1 K, Q3 H* r9 U# `  K
    要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制指令。 转义序列通常都是以 ESC 开头(这也是它的命名原因)。 在 shell 里表示为 ^[ .这种表示法需要一点时间去适应, 也可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27,等于用八进制表示的 033)8 X& |2 j! h( ^7 T! k; B
代码:
4 s0 s4 X9 t2 f: q! y        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 \]"
/ I. F1 {: h# ?0 ?9 j. q2 g$ p最外边的"\[    \]"是为了把转义序列的字符串括起来,防止转义序列的文本显示在 shell 里占用太多的空间。; r) H+ I- P2 q- ]6 \) R
\033 声明了转义序列的开始,然后是 [ 开始定义颜色。 后面的 0 定义了默认的字体宽度,接着的中间的数字定义字符颜色。最后面的数字定义了字符背景色。字母m是定义本身所必须的,字母m后面的字符就是你想改变的字符了。
- r! k! `% u7 z 可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。 他们对应的颜色代码是:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。4 E- Z4 y8 I! f/ u/ e
用同样色方法设置背景色,不过要把第一个数字“3”替换成“4”, 例如 40、41、42、43、44、45、46、47。
" A- Y' L+ E- P5 O* ^9 \比如上面我的定义中: 最后显示的结果是在$号之前的字符全部用一个浅绿色的中括弧扩起来。$字符 显示为红色。后面的输入显示为高亮浅绿色。在括弧里面,用户名@主机显示为深绿色,路径显示为洋红。0 ^3 v/ o5 n7 Z3 ~4 u. @5 B: G
用代码解释:
( n) x& c3 N! s7 cPs1 ="\[                                                  -------------> 最外面的括弧
- x  U+ {$ j5 m7 ^( L, @. W                 \033[1;32;40m[
- W3 U0 c4 [5 r! g" E" q2 X                                               ----> 定义最右边的" [ " ;1:字体宽度,好像有加亮功能。) H1 J8 p, M8 ]! U4 N
                                                                                              32:字符颜色。32表示绿色。9 r  {- U% h6 Z" V- P% j: R+ e! t
                                                                                              40:背景色,40表示黑色。; y7 M4 S7 l1 z% _% w3 z- R& }
                \033[0;32;40m\u@\h:
  Y2 K) i* a' R+ c7 \7 x                                                --------->定义右边的 \u@\h:  这几个字符颜色。
8 L, x  V* x! O# r& n5 K4 C+ b' [                                                                                            0: 默认字体宽度。% J, M& p' ~5 \; J7 F: o
                                                                                             32:字符颜色。绿色。
+ S: @7 }0 z4 ]- @" D                                                                                             40:  背景颜色。黑色。4 W$ L9 ]4 t1 e% L$ G: ?# e! V) A/ |8 c
                   \033[1;35;40m\w$ D' @2 f& b! `0 G
                                                  ---------> 定义右边的 \w  (路径颜色) 。* U1 H. C$ [  E, [7 B/ L9 X
                                                                                             1:字符宽度。加亮。
. \9 D7 G5 k* H: U9 K+ n                                                                                             35:字符颜色。洋红。& A. q! C' q1 i1 v) q
                                                                                             40:背景色。黑色。
$ n. s% Q9 ?0 S& [. W                     \033[1;32;40m]1 L: N7 q" ]- a7 Y* y
                                                  ---------> 定义右边的  ]  字符。跟前面的   [   字符使用同一效果。
' n6 u. S, X4 g+ `& l                     \033[1;31;40m\$
) }* j" A  R( n+ k3 y6 \! p                                                   ---------> 定义了  $  字符 为红色。转义字符,所以前面加了 \ .
& N7 Y3 ~8 R! v( d8 g8 |                                                                       颜色都跟前面差不多。相信大家都发现规律了。$ N" w& V: I' u! O8 p8 B% f$ Y
                      \033[1;32;40m1 T6 c2 k/ y; H' k( l9 P
                                                  ----------> 这个定义了你在命令行要输入命令显示的颜色。0 L' F$ u2 Y5 G" c0 v* F
                       \]"
) ~5 m, h% p- n, n. k                                                  -----------> 字符串结束括弧。; e* A0 {* m/ S. A' x' l5 D
这个就是上面例子的详细定义内容。  P; x  ^; X' U6 C' H2 N
其 实我的是没有关闭颜色转义序列,让自己输入的字符也改变颜色,整天看这黑白屏幕不爽哇!!如果不想改变输入颜色的话,用 \033[0m 关闭转义序列, \033[0m 是 shell 的默认颜色。按照上面的例子来说就是在 \]" 前面加上 \033[0m 即可。
2 ]+ ?& q+ c+ g' P, {& F2 Y够简单吧?( h0 o* x4 G3 w9 }# r
看看root下的shell:8 \, [- B2 f% n3 D$ z
rootshowG
8 u5 J% R1 m( d& ]4 @) X# L这个也不错,是 Nico Golde的:0 A0 s8 V4 ^- h1 d* c8 j
PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"" }' I6 j$ a2 S% T0 m. Z# N

$ ^; h% ^. m* S  R+ R9 k
发表于 2017-1-5 20:09 | 显示全部楼层
用linux的,一般不会搞得那么复杂
回复

使用道具 举报

 楼主| 发表于 2017-1-5 23:30 | 显示全部楼层
devcang 发表于 2017-1-5 20:09
" a# ^0 p2 n' d: ^1 t( L用linux的,一般不会搞得那么复杂
8 L5 N/ b) B& q+ h2 ?" W6 F
没关系有兴趣的可以多了解一下
3 Y& j$ v- l- i1 n1 V. @
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-1-11 17:23 , Processed in 0.035289 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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