暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于为centos7中命令提示符设置颜色之后,无法正常换行的问题

原创 周波 云和恩墨 2022-04-07
2231

1.问题描述:

  使用xshell连接centos7虚拟机之后,为命令提示符设置颜色,也就是在/etc/profile中添加了PS1环境变量的配置,最初我的配置是:

vim /etc/profile
export PS1='[\e[32;1m\u@\e[34;1m\h \e[35;1m\w\e[0m]\$ '
source /etc/profile

重新加载了配置文件,确实有效果,如下图所示:
image.png
  有了颜色的命令提示符,看着就更爽了,给这黑白界面添加了些许趣味。

伴随而来的不仅是乐趣,还有让人头疼的问题:
1)当在命令行中输入较长的命令时,发现不会自动换行,而是继续覆盖掉该行最前面的命令提示符,然后继续覆盖掉之前输入的命令,直到该行再次被字符填充满才会换行(头疼),如下所示:
输入命令过长时,会覆盖该行前面的字符:
image.png
到前面这里看着就不爽了,ctrl+c中断输入。

无聊嘛,继续测试它什么时候会换行(直到该行再次被字符填充满才会换行):
image.png

2)当按上下键翻历史命令时,会出现命令显示异常:
image.png

通过上下键翻历史命令,它如此显示,这"狗东西"看着让人着实难受嘛!
自从我学会了给命令提示符设置颜色之后(应该说学错了),每次新建虚拟机,我就要设置一下PS1,就是手痒,然后就是上面的问题,直到今天我解决了!!

2.问题的发展之旅

  这个问题有两三年的历史了,我心也是够大的。直到今天我再次看到这个现象,我终于是忍不住了,一定要把这个问题给kill掉,要不然我心里难受。(最后发现就是PS1设置不当的问题)

1)怀疑是xshell的问题

  我就去网上找,“使用xshell时,当输入命令过长时如何自动换行”
解决办法:右键会话——>属性——>VT模式——>选择“Auto Wrap Mode”
就ok了,没用,因为问题不是因为这个嘛。

  我依旧坚信是xshell的问题,然后我依次试了各种属性配置,最后发现将终端类型改为ansi,终于可以换行了,但是翻命令还是显示异常,没办法了,将就吧。
image.png

2)怀疑是虚拟机操作系统配置出现问题

  今天测试了htop命令,执行该命令之后,如下图:
image.png
显示很混乱,就是因为终端类型设置成了ansi,还是得改成linux类型:
image.png
这样格式就规整很多了,将终端类型设置为ansi终究不是解决问题的办法,是给自己造问题,不及时将问题正确解决,而是耍小聪明,只会带来越多的问题。
  再次确定,xshell属性设置没问题,那么会不会是centos设置有问题,经上网查,是因为给命令提示符设置颜色不当存在的问题。在虚拟机中测试,发现虚拟机也不可以自动换行。

3.解决问题:

1)命令提示符相关知识:

\d :#代表日期,格式为weekday month date,例如:“Mon Aug 1”
\H :#完整的主机名称
\h :#仅取主机的第一个名字
\t :#显示时间为24小时格式,如:HH:MM:SS
\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM
\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
# :#下达的第几个命令
\ $ :#提示字符,如果是root时,提示符为:#,普通用户则为:$

2)命令提示符设置颜色:

开始颜色输入:[\e[F;Bm]
结束颜色输入:[\e[0m]
‘F’ 字体颜色(编号30-37)
‘B’ 背景颜色(编号40-47)
‘m’ 表示转义结束
字体颜色 背景颜色 所选颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色

3)修改命令提示符(最终):

export PS1='[\[\e[32;1m\]\u@\[\e[34;1m\]\h \[\e[35;1m\]\w\[\e[0m\]]\$ '

失败的原因就是少用’[]‘将’\e[32;1m’括起来了,记得将不需要显示的中括号用‘\’进行转义,其中PS1的值用单引号或双引号括起来都可以。

image.png

如果没有使用PS1设置颜色也就没这么多事。

最后修改时间:2022-08-27 16:25:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论