我想在我的 gnome 终端上打印这样的东西
[abc@host pwd]$ ************************************************************
在 PS1 中使用一些操作,但星星的数量是动态的,具体取决于 PS1 和 端子宽度。那么有人可以建议我如何找出 PS1 的长度,即将显示的实际字符串吗?
可以从 Bash 环境变量中读取当前行长度
COLUMNS
。
要将提示设置为始终为一行星号,其数量等于按下 Enter 时终端的确切宽度(加上两端的换行符),即使在评估
~/.bashrc
后更改宽度,也请包括以下为~/.bashrc
:
function generate_prompt ()
{
prompt="\n"
for ((i = 0; i < $COLUMNS; i++)); do
prompt+='*'
done
prompt+="\n"
echo -e $prompt
}
export PS1="\$(generate_prompt)"
如果您希望在提示中获得其他输出,然后用星号字符填充该行的其余部分,则必须从
$COLUMNS
中减去其他输出的长度。我不知道该怎么做。
在我看来,它无法移植,因为
PS1
可以包含颜色代码的转义序列,也可以包含(多个)新行。
可以计算。但这是一项非常艰巨的任务。如果用户在变量名中编码颜色代码(这是常见情况),如何决定(在评估/计算长度期间)这是用户想要显示的内容还是只是样式信息?