我想将bash提示符设置为固定宽度,并在$之前补足空格差异,无论是长还是短,我的提示都保持相同的宽度:
[name@host] ~/Directory/Dir...Another/LastDir $
[name@host] ~/Directory(branch) $
目前,在短目录路径中,我的提示符如下所示:
[name@host] ~/Directory(branch) $
更深层的目录路径如下所示:
[name@host] ~/Directory/Dir...Another/LastDir $
你可以看到我在中间截断了PWD,所以我可以看到路径的开始位置和结束位置。我想在$。之前弥补差异。
这是我当前的提示:
# keep working directory to 30 chars, center tuncated
prompt_pwd() {
local pwd_symbol="..."
local pwd_length=30
newPWD="${PWD/#$HOME/~}"
[ ${#newPWD} -gt ${pwd_length} ] && newPWD=${newPWD:0:12}${pwd_symbol}${newPWD:${#newPWD}-15}
}
# set prompt
prompt_color() {
PROMPT_COMMAND='prompt_pwd;history -a;title_git'
PS1="${WHITEONMAGENTA}[\u@\h]${MAGENTA} \w\$(parse_git_branch) ${MAGENTABOLD}\$${PS_CLEAR} "
PS1=${PS1//\\w/\$\{newPWD\}}
PS2="${WHITEONTEAL}>${PS_CLEAR} "
}
在我的搜索中,我发现A Prompt the Width of Your Term确实做了一些填充,但无法让它适用于此特定提示。
答案 0 :(得分:3)
如果您的路径太短([ ${#newPWD} -le ${pwd_length} ]
),则可以使用printf(1)来扩展它。
printf -v newPWD "%-*s" $pwd_length "$newPWD"
这将使$newPWD
中的字符串左对齐,字段宽度为$pwd_length
。
printf(1)内置于bash中,因此运行每个提示符并不太昂贵。
答案 1 :(得分:1)
您可以设置环境变量BASH_COMMAND
,它允许您手动定义提示。您可以使用expand -t
将其达到所需的长度。
答案 2 :(得分:0)
我所做的是定位我的目录以及上面我的提示,所以我不必担心:
myusername@mybox:/home/myusername/some/directory
$
这样,我还可以为SCP和SSH命令复制上面的行而不必添加user @ host:/ directory示例。
这是我的$ PS1变量,如果您想尝试一下:
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$