Bash 中的右侧和左侧提示符

Bash 中的右侧和左侧提示符

我希望在终端左侧有一个提示符,而在终端右侧则有另一个提示符...所以这就是我目前所拥有的,它部分工作正常,但提示符的右侧在右侧,但不是全部在右侧。它短了 23 列。我注意到 tput cols 报告总共 157 列,但提示符只会打印到第 135 列的字符。同样,这比终端右侧少了 23 列。我计算了右侧提示符中的字符数,是 22。所以这就是我目前所拥有的:

#!/bin/bash

SAVE='\e[s'
RESTORE='\e[u'

COLUMNS=$(tput cols) 

pipe_color='38;2;255;255;255'
pipe_bg_color='48;2;65;74;76'
username_color='38;2;0;0;0'
username_bg_color='48;2;192;197;206'
at_color='38;2;255;255;255'
at_bg_color='48;2;65;74;76'
host_color='38;2;255;255;255'
host_bg_color='48;2;00;91;150'
workingdir_color='38;2;255;255;255'
workingdir_bg_color='48;2;54;128;45'
date_color='38;2;0;0;0'
date_bg_color='48;2;255;167;0'
time_color='38;2;255;167;0'
time_bg_color='48;2;0;0;0'
bar_spaces_bg_color='48;2;167;173;186'
reset_color='00'



function rightPrompt {
printf -v PS1R "\[\e[${pipe_color}m\]\[\e[${pipe_bg_color}m\]|\[\e[${date_color}m\]\[\e[${date_bg_color}m\]%([%F])T\[\e[${pipe_color}m\]\[\e[${pipe_bg_color}m\]|\[\e[${date_color}m\]\[\e[${date_bg_color}m\]%([%H:%M])T\[\e[${pipe_color}m\]\[\e[${pipe_bg_color}m\]|\[\e[${reset_color}m\]"
}

rightPrompt

PS1R_stripped=$(sed "s,\x1b\[[0-9;]*[a-zA-Z],,g" <<<"$PS1R")


function leftPrompt {
PS1=$(printf "\[\e[${pipe_color}m\e[${pipe_bg_color}m\]|\[\e[${username_color}m\e[${username_bg_color}m\]%b\[\e[${pipe_color}m\e[${pipe_bg_color}m\]|\[\e[${at_color}m\e[${at_bg_color}m\]@\[\e[${pipe_color}m\e[${pipe_bg_color}m\]|\[\e[${host_color}m\e[${host_bg_color}m\]\h\[\e[${pipe_color}m\e[${pipe_bg_color}m\]|\[\e[${reset_color}m\]" '\\u')
}

leftPrompt 

PS1="\[${SAVE}\]\[\e[${COLUMNS:-$(tput cols)}C\]\[\e[${#PS1R_stripped}D\]${PS1R}\[${RESTORE}\]${PS1}"

        

相关内容