質問

バッシュプロンプトを固定幅に設定し、$の前にスペースの違いを構成したいので、長くても短いかどうかにかかわらず、私のプロンプトは同じ幅のままです。

[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\$

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top