题
我想将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} "
}
在我的搜索中,我发现 提示您任期的宽度 确实有一些填充,但无法在此特定的提示下工作。
解决方案
如果您的道路太短([ ${#newPWD} -le ${pwd_length} ]
),您可以使用printf(1)扩展它。
printf -v newPWD "%-*s" $pwd_length "$newPWD"
这将使字符串在 $newPWD
具有场宽度 $pwd_length
.
printf(1)内置在bash中,因此运行每个提示并不太贵。
其他提示
您可以设置环境变量 BASH_COMMAND
, ,这使您可以手动定义提示。您可以使用 expand -t
将其达到所需的长度。
我所做的就是定位我的目录等 多于 我的提示,所以我不必担心:
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\$
不隶属于 StackOverflow