一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

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

环境变量 PS1

[复制链接]
发表于 2017-1-5 17:34 | 显示全部楼层 |阅读模式
- f/ b; }7 \$ u) ^, h! Z
环境变量 PS1
& c" g7 O$ u% m/ |2 s, t7 G以 Bash shell 为例
( t- ~8 |' V( v  r一般默认的情况下.bashrc里面应该是:
% C6 D5 w( `4 b) ?4 _& Q    ~/.bashrc
& D0 x! f, S! h$ s$ E. }     export    PS1=' \u@\h:\w\$ '
% G- e* z5 X3 A7 B     上面的意思是:用户@主机:当前目录 $
0 M# }4 C; `# E" O转义序列. \2 A/ G9 j" R0 h* |# `0 H
    要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制指令。 转义序列通常都是以 ESC 开头(这也是它的命名原因)。 在 shell 里表示为 ^[ .这种表示法需要一点时间去适应, 也可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27,等于用八进制表示的 033)
. X4 P' A. V7 d0 t/ h2 q" ?2 }' o代码:
; o2 V# G) N1 i9 v3 z        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 \]"5 ^; d3 r  J! ]5 r( f4 O: N3 `
最外边的"\[    \]"是为了把转义序列的字符串括起来,防止转义序列的文本显示在 shell 里占用太多的空间。
) c7 Z; |1 o8 I+ s* N+ e* F- \\033 声明了转义序列的开始,然后是 [ 开始定义颜色。 后面的 0 定义了默认的字体宽度,接着的中间的数字定义字符颜色。最后面的数字定义了字符背景色。字母m是定义本身所必须的,字母m后面的字符就是你想改变的字符了。1 ~: p8 g. h$ {2 I/ x& @; g
可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。 他们对应的颜色代码是:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。4 x' a$ O, P2 v, V' D% ^& R- K1 F
用同样色方法设置背景色,不过要把第一个数字“3”替换成“4”, 例如 40、41、42、43、44、45、46、47。2 b7 b' O9 Y- ^; U
比如上面我的定义中: 最后显示的结果是在$号之前的字符全部用一个浅绿色的中括弧扩起来。$字符 显示为红色。后面的输入显示为高亮浅绿色。在括弧里面,用户名@主机显示为深绿色,路径显示为洋红。1 h* |3 Y+ N% x! ]0 v
用代码解释:+ ^/ O# k2 C. W1 {# b4 K4 C
Ps1 ="\[                                                  -------------> 最外面的括弧
7 j3 D; [6 w/ d# J8 C( K                 \033[1;32;40m[
1 u/ F3 b* B7 N9 G* Q1 \- q                                               ----> 定义最右边的" [ " ;1:字体宽度,好像有加亮功能。
1 X: V. ~7 k; n7 z5 V                                                                                              32:字符颜色。32表示绿色。
/ \/ P) q* f) A- M3 M% M6 o                                                                                              40:背景色,40表示黑色。
$ m( b; [+ G/ ]3 `: U) I& ^                \033[0;32;40m\u@\h:. p+ V$ E  _& w3 R* r  T( {/ Q
                                                --------->定义右边的 \u@\h:  这几个字符颜色。2 M, w' e5 c. P* Z: @
                                                                                            0: 默认字体宽度。$ n' c7 M0 o- g5 r( v
                                                                                             32:字符颜色。绿色。% V, ~0 W' o; {
                                                                                             40:  背景颜色。黑色。
, z/ c7 F, A$ k6 H                   \033[1;35;40m\w
7 y, h  T* r* P2 @2 B                                                  ---------> 定义右边的 \w  (路径颜色) 。0 b- X% R+ s9 e# P3 w
                                                                                             1:字符宽度。加亮。
4 a3 C; N' d3 y4 @8 m1 p                                                                                             35:字符颜色。洋红。5 X! Y% t+ _4 ]" C* R& M% f; R
                                                                                             40:背景色。黑色。0 `1 ?( F+ S- k6 E' D
                     \033[1;32;40m]% Q2 X9 D# \2 C, l1 T6 d. [
                                                  ---------> 定义右边的  ]  字符。跟前面的   [   字符使用同一效果。9 v& o# v5 z1 I3 a7 `! v
                     \033[1;31;40m\$9 g* H9 R% ?1 w& ?# W9 g$ S
                                                   ---------> 定义了  $  字符 为红色。转义字符,所以前面加了 \ ., Y. B( U! I8 i, k, O
                                                                       颜色都跟前面差不多。相信大家都发现规律了。
; t8 N% ^( `0 a/ B8 ~                      \033[1;32;40m# F  s& Z4 m4 q( s
                                                  ----------> 这个定义了你在命令行要输入命令显示的颜色。
2 z/ F$ P- O; N/ O' m                       \]"
! ?! [- x% b* Q/ M                                                  -----------> 字符串结束括弧。4 B% H& F/ B  V9 ^
这个就是上面例子的详细定义内容。
! T5 D: q! g. x4 n0 ^! K其 实我的是没有关闭颜色转义序列,让自己输入的字符也改变颜色,整天看这黑白屏幕不爽哇!!如果不想改变输入颜色的话,用 \033[0m 关闭转义序列, \033[0m 是 shell 的默认颜色。按照上面的例子来说就是在 \]" 前面加上 \033[0m 即可。5 q5 w% P5 n4 s1 f  C+ C# J2 A# ^9 A  ^
够简单吧?
* F$ D, \0 a6 ?2 Q  R看看root下的shell:
% _( Q* b: J$ A8 N3 k' _' w# rrootshowG$ X( m3 E. V/ \: ?( {
这个也不错,是 Nico Golde的:
9 y, c9 A* ^3 t8 `6 r$ p" |- PPS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"
) U! H- i6 j& ~! ]5 S( M( s- J
; z) y" s2 M9 n0 i+ h1 K
发表于 2017-1-5 20:09 | 显示全部楼层
用linux的,一般不会搞得那么复杂
 楼主| 发表于 2017-1-5 23:30 | 显示全部楼层
devcang 发表于 2017-1-5 20:09# u1 w' }! }9 H" q
用linux的,一般不会搞得那么复杂

+ b( e( }- n* A1 j- Y5 H$ A没关系有兴趣的可以多了解一下
3 l( a0 @- C# m

本版积分规则

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

GMT+8, 2024-5-2 15:54 , Processed in 0.055601 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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