`
flytreeleft
  • 浏览: 91797 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

linux 输入长命令行 会无缘无故的回到行开始,本来应该在下一行继续的!

阅读更多

        2009年的百度知道上有人问了同题目相同的问题(其实,是我用了这个题目).而我也遇到了相同的问题,这个问题早就出现了,只是以前一直没有理会,不过好几次输入参数过长的命令,都会出现回到行首的情况,让我感到莫名的无奈.今天,实在没有心情做公司的工作了,便想把这个问题给解决一下,也好转移一下注意力.


        首先,我测试了一下虚拟终端,一直输入a,然后,又测试了纯终端(Ctrl+Alt+F1),也是输入a.我发现,长命令只有一次是回到了行首,后面的输入,其能够自动换行.于是,第一反映是看看网上是否有和我遇到相同问题的,在Google中输入关键词"Linux 长命令",返回结果的第一条就是上面的那个百度知道上提的问题,与我的情况完全相同.再看看,网友给的答案,结果却是使用反斜杠\来绕过这个问题,这个答案是不能让我满意的,不过,问题的描述中提到了终端的配置这个东西,这给了我一个方向: 应该是配置上的问题,那怎么修改配置呢?


        接着,我又在Google中输入关键词"Linux 终端 配置",在查看结果的时候,我发现,原来终端的配置是修改"~/.bashrc",而这个文件我是接触过多次的,而且,通过修改该文件,我还将PS1给改了一下,让提示符更好看一点.那是不是因为修改了PS1导致了这个问题呢?于是,我打开"~/.bashrc"文件,将修改PS1变量给注释掉,然后,重新打开一个终端,再一直输入a,这次终端便能够自动换行了,而不会出现回到行首继续输入的问题了.


        这下问题锁定了,但是,还不确定如何修改,我可不想将漂亮的提示符给换回去.


        继续Google,这次用英文的,毕竟英语国家的人接触时间更长,而且,回答问题的人也会很多.输入关键词"Linux long command",粗略浏览了一下,就第一个好像是有用的,进去看了看,发现和我的问题不一样,还是使用反斜杠解决长命令换行的.


        继续换关键词,这次在搜索时将long command用双引号括了起来,然后再加一个head,组成"linux "long command" head".嗯,结果每一个都不符合我的情况.


        既然,我的问题是和PS1变量的设置有关,那试试"linux "long command" PS1"呢.哈哈,结果第一个就完全符合我的情况,点进去看看.这是Ubuntu提问区,仔细阅读了这篇名为<How do I get long command lines to wrap to the next line?>的问题帖,其中有人回答如下:

 

Make sure all non-printable bytes in your PS1 are contained within \[ \]. Otherwise, bash will count them in the length of the prompt. It uses the length of the prompt to determine when to wrap the line.
See http://mywiki.wooledge.org/BashFAQ/053
 

         也就是说,在bash中,所有在PS1中的非打印字符都必须用"\[\]"(不包括引号)将其包围起来,否则在计算提示符长度时也会将其计算在内,导致其无法正确地换行,也就出现了回到行首的情况.


        不过,我对什么是非打印字符还是不太清楚,于是用看了看http://mywiki.wooledge.org/BashFAQ/053,原来颜色的转义序列符就是非打印字符.在我的PS1中就包含了不少的颜色,于是,我就耐心地将每个颜色转义序列符都用"\[\]"括起来,然后,再重新打开一个终端,仍然连续输入a.嘿,问题还真就解决了,就是这个问题!


        好了,今天成功解决2009年遗留下来的历史问题,同时也解决了我这么长时间遗留的历史问题,哈哈!


        下面,贡献一下我的提示符PS1设置:

 

PS1="\[\e[35m\]^o^\[\e[0m\]$ \[\e[31m\]\t\[\e[0m\] [\[\e[36m\]\W\[\e[0m\]] \[\e[32m\]\u\[\e[0m\]\[\e[33m\]@\[\e[0m\]\[\e[34m\]\h\[\e[0m\]\n\[\e[35m\].O.\[\e[0m\]\$ "
 

        截图效果如下,是不是挺可爱的?:

        打个广告: 上图是我用自己写的一个截图程序截的图,目前正在完善和修改中,待完成后,我会将其开源,与大家共享,敬请期待!

  • 大小: 6.9 KB
1
0
分享到:
评论
2 楼 ming1259 2017-07-30  
谢谢你了,我快被这个问题这么死了!终于知道为什么bash命令提示符总是异常的原因了!
1 楼 duolaimifa 2015-12-28  
我也遇到了同样的问题,之前以为是中文putty的问题,后来换了原版putty还是有问题,然后就找到你这儿来了。谢谢题主的解决方案。

相关推荐

Global site tag (gtag.js) - Google Analytics