固定宽度bash提示

时间:2010-05-27 17:36:23

标签: macos bash .bash-profile

我想将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确实做了一些填充,但无法让它适用于此特定提示。

3 个答案:

答案 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\$