yay*_*ayu 16 command-line bash ps1
我做了一个简单的 PS1 作业
PS1="\e[0;31m[\W]\$ \e[m "
Run Code Online (Sandbox Code Playgroud)
我想要做的就是更改提示颜色并仅显示相对路径。但是,这会弄乱 CLI。例如,当浏览历史时,?
它会裁剪并重叠显示。当我键入一个长命令时,光标移动到与提示显示本身重叠的屏幕的开头。我做错了什么?
gei*_*rha 31
那是因为 bash 认为提示比它长。\e[0;31m
例如,转义序列被终端吸收,进而将以下文本变为红色,但 bash 不知道这一点。因此,您必须告诉 bash 该字符序列不应计入提示的长度,您可以通过将其包含在\[ \]
. 我还建议使用 tput 而不是硬编码终端转义序列。
red=$(tput setaf 1)
reset=$(tput sgr0)
PS1='\[$red\][\W]\$\[$reset\] '
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅BashFAQ 53和终端代码 (ANSI/VT100) 介绍。
归档时间: |
|
查看次数: |
5976 次 |
最近记录: |