版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
' M: v. @% c; X# k' K0 r9 ~1 u环境变量 PS1
5 d7 \- p4 f" @/ \8 c& L以 Bash shell 为例% m% |9 S; Y; F$ k, x# S
一般默认的情况下.bashrc里面应该是:: v( _+ h4 [/ W. H* R: E& }
~/.bashrc
9 D: u) y7 J V3 A1 P, c1 p export PS1=' \u@\h:\w\$ '
% A/ x4 i0 m' Y: V 上面的意思是:用户@主机:当前目录 $
% G8 Q) O- @- z* n转义序列
& X1 n0 I6 A. |: a8 b& L 要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制指令。 转义序列通常都是以 ESC 开头(这也是它的命名原因)。 在 shell 里表示为 ^[ .这种表示法需要一点时间去适应, 也可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27,等于用八进制表示的 033)2 ~& T3 S* {) x. \- `: e4 ^1 b
代码:, y+ U! [* z+ o! ]9 q6 ]
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 \]"4 o3 X$ `0 K9 y. p5 Y! p5 z& g
最外边的"\[ \]"是为了把转义序列的字符串括起来,防止转义序列的文本显示在 shell 里占用太多的空间。1 g( V7 p2 P5 p& U" h
\033 声明了转义序列的开始,然后是 [ 开始定义颜色。 后面的 0 定义了默认的字体宽度,接着的中间的数字定义字符颜色。最后面的数字定义了字符背景色。字母m是定义本身所必须的,字母m后面的字符就是你想改变的字符了。
8 h+ D5 B2 w* c. `) S 可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。 他们对应的颜色代码是:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。6 {& P- \0 E# D) V6 A7 K+ t1 Z
用同样色方法设置背景色,不过要把第一个数字“3”替换成“4”, 例如 40、41、42、43、44、45、46、47。0 j& x+ [+ J: w( |& ~5 R. { ?( g e
比如上面我的定义中: 最后显示的结果是在$号之前的字符全部用一个浅绿色的中括弧扩起来。$字符 显示为红色。后面的输入显示为高亮浅绿色。在括弧里面,用户名@主机显示为深绿色,路径显示为洋红。+ L5 `5 n! y3 I! _2 |4 L2 @
用代码解释:
# G# C4 z9 n" i, c5 U3 k8 t- l0 ]Ps1 ="\[ -------------> 最外面的括弧
( F* q& r, {: j+ i, K6 ~6 F% {# C \033[1;32;40m[
2 U; `$ Q) B1 ]7 ~! p* R4 K ----> 定义最右边的" [ " ;1:字体宽度,好像有加亮功能。% G2 n' r! P/ }# g* @" q
32:字符颜色。32表示绿色。0 K& O% S. Z! E# s
40:背景色,40表示黑色。) r5 _) t9 h; x5 ?; b
\033[0;32;40m\u@\h:9 G4 D% Q" H* h% u
--------->定义右边的 \u@\h: 这几个字符颜色。
% I9 m- v" q# b6 _: J 0: 默认字体宽度。2 [) f8 M2 ?. V8 ?
32:字符颜色。绿色。" w% d! `; n! B& M K4 N: R
40: 背景颜色。黑色。
% v8 @8 ~; V: W \033[1;35;40m\w
+ b- ]" V8 J$ ^: h. W* M ---------> 定义右边的 \w (路径颜色) 。
& M$ _" S* M1 p+ A" K G 1:字符宽度。加亮。 B, b5 [" R0 O% f
35:字符颜色。洋红。
: K0 q/ m+ h$ `6 D% q1 Z 40:背景色。黑色。
. X' j$ {% W7 \( M6 x0 z \033[1;32;40m]. [; F7 a: D5 d. x1 k( s2 W
---------> 定义右边的 ] 字符。跟前面的 [ 字符使用同一效果。
: @+ q% M; |! L \033[1;31;40m\$
! N1 q3 o) `% V4 Z ---------> 定义了 $ 字符 为红色。转义字符,所以前面加了 \ .
' S0 W h; O9 U 颜色都跟前面差不多。相信大家都发现规律了。) |4 ~! b) v/ e7 Z7 m" W
\033[1;32;40m R* P% [: s2 O3 R$ u9 |% [% K
----------> 这个定义了你在命令行要输入命令显示的颜色。
# P( Y+ k1 l: C5 v \]"
l$ t; i6 ?3 ? -----------> 字符串结束括弧。
, l, i: {* w. r& o. `6 x# ~这个就是上面例子的详细定义内容。
% j& R& L) J, O6 w5 ^其 实我的是没有关闭颜色转义序列,让自己输入的字符也改变颜色,整天看这黑白屏幕不爽哇!!如果不想改变输入颜色的话,用 \033[0m 关闭转义序列, \033[0m 是 shell 的默认颜色。按照上面的例子来说就是在 \]" 前面加上 \033[0m 即可。
( R# N1 ?8 E/ a够简单吧?0 H+ L6 i d. g/ E8 R. ~2 R1 V
看看root下的shell:
% O2 v2 P6 t: D* B( f7 ]rootshowG
: h X" Q/ _# N6 o6 d7 e7 z# k, U这个也不错,是 Nico Golde的:
5 A6 |- l& [ v4 X/ g0 y0 g+ CPS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"
, `6 P+ M* K8 P8 Y1 h# b) o' [7 e
|
|