bash提示行设置问题
bash prompt line setting issue
我用xshell连接centos的云服务,我把/etc/bashrc里的$PS1值设置为\e[0;34m[\u@\h \W]$ \e[m
,这样我的promt就变成了蓝色,这样我可以分辨哪个是我的命令输入,哪个是输出。
但是,如果我的命令多于一行,则此提示无法自动添加新行。如果一行已满,它就从同一行的左侧开始填充。可以看到截图如下:
我要的是命令写满一行就自动换行
我试过 \n 但只是在命令前添加了一个新行,这不是我想要的效果.
现在试了PS1='[\e[0;34m[\u@\h \W]$ \e[m]',效果是这样的:
bash
无法判断您的提示实际在屏幕上占据了多少 space,因为设置颜色的 ANSI 转义序列不占用任何 space。您需要将它们(并且 仅 它们)包含在 \[...\]
中以尽可能多地告诉 bash
。
PS1='\[\e[0;34m\][\u@\h \W]$ \[\e[m\]'
bash
已经知道如何处理自己的转义序列 \u
、\h
和 \W
。 ANSI 转义序列仅对 终端.
有特殊意义
也就是说,\u
等 在 之前展开 bash
尝试确定提示中有多少个字符。就其所知,\e
、[
、0
、;
、3
、4
和 m
都将是按字面显示为单个字符。终端看到它们,而不是显示它们,而是更改用于打印以下字符的颜色。
我用xshell连接centos的云服务,我把/etc/bashrc里的$PS1值设置为\e[0;34m[\u@\h \W]$ \e[m
,这样我的promt就变成了蓝色,这样我可以分辨哪个是我的命令输入,哪个是输出。
但是,如果我的命令多于一行,则此提示无法自动添加新行。如果一行已满,它就从同一行的左侧开始填充。可以看到截图如下:
我要的是命令写满一行就自动换行
我试过 \n 但只是在命令前添加了一个新行,这不是我想要的效果.
现在试了PS1='[\e[0;34m[\u@\h \W]$ \e[m]',效果是这样的:
bash
无法判断您的提示实际在屏幕上占据了多少 space,因为设置颜色的 ANSI 转义序列不占用任何 space。您需要将它们(并且 仅 它们)包含在 \[...\]
中以尽可能多地告诉 bash
。
PS1='\[\e[0;34m\][\u@\h \W]$ \[\e[m\]'
bash
已经知道如何处理自己的转义序列 \u
、\h
和 \W
。 ANSI 转义序列仅对 终端.
也就是说,\u
等 在 之前展开 bash
尝试确定提示中有多少个字符。就其所知,\e
、[
、0
、;
、3
、4
和 m
都将是按字面显示为单个字符。终端看到它们,而不是显示它们,而是更改用于打印以下字符的颜色。