質問
バッシュプロンプトを固定幅に設定し、$の前にスペースの違いを構成したいので、長くても短いかどうかにかかわらず、私のプロンプトは同じ幅のままです。
[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
$
これにより、User@host:/Directoryの例を準備することなく、SCPおよびSSHコマンドの上記の行をコピーするという追加の利点を持つこともできます。
これが私の$ PS1変数です。あなたがそれを試してみたいなら:
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$