高超 wrote: > Yunfeng Wang wrote: > >> 在 06-4-10,高超<[EMAIL PROTECTED]> 写道: >> >> >>> Yunfeng Wang wrote: >>> >>> >>>> 唉,发到水木上被大水淹了,到这儿向xd们讨教一下,看能解决不 >>>> >>>> 使用\[ \]将PS1中的非打印字符串(如\e[0m之类)包裹起来,会在特定情况下 >>>> 出现光标定位错误 >>>> >>>> $PS1='$' >>>> $echo -n abc # 输出abc后不换行 >>>> abc$ >>>> ^ # ^所指处为光标位置,正确 >>>> # web上看因字体的缘故可能没对齐,term下是正确的 >>>> $PS1='\[\e[0m\]$' >>>> $echo -n abc >>>> $bc$ >>>> ^ # 光标定位错误 >>>> $PS1='\[\e[0m\]123$' >>>> 123$echo -n abc >>>> abc123$ >>>> ^ # 正确 >>>> >>>> 总结起来,如果\[ \]包裹的字符数(\e只算一个字符)超过其余的正常字符数, >>>> 就会出现光标定位错误,表现为在正常输出字符串abc以及$PS1后光标退回行首 >>>> 并再次输出$PS1,从而将先前的输出部分覆盖 >>>> >>>> $ echo $BASH_VERSION >>>> 3.1.11(1)-release >>>> >>>> >>>> >>> 重复了一下你的过程,没有重现你说的问题 >>> $echo $BASH_VERSION >>> 3.00.16(1)-release >>> >>> >> 嗯,我试了一下bash v3.0,的确没有问题,那么看来是3.1的问题喽? >> 麻烦xd也测试一下3.1,做个确认 >> >> > Etch: 确实存在问题 > echo $BASH_VERSION > 3.1.5(1)-release > FreeBSD 6.0: 同样的问题,3.0正常,3.1有问题 ----------------- echo $BASH_VERSION 3.00.16(1)-release -----------------
----------------- echo $BASH_VERSION 3.1.10(1)-release ----------------- -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]