版主
  
主题
帖子
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
! 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 |
|