Frage

Ich möchte auf eine feste Breite meines Bash-Eingabeaufforderung setzen, und den Unterschied im Raum vor dem $ bilden, also, ob lang oder kurz, meint Prompt bleibt die gleiche Breite:

[name@host] ~/Directory/Dir...Another/LastDir $ 
[name@host] ~/Directory(branch)               $ 

Derzeit wird in einem kurzen Verzeichnispfad meiner Prompt sieht etwa so aus:

[name@host] ~/Directory(branch) $ 

ein tiefer Verzeichnispfad sieht wie folgt aus:

[name@host] ~/Directory/Dir...Another/LastDir $ 

können Sie sehen, ich die PWD in der Mitte abgeschnitten habe, damit ich sehen kann, wo der Weg beginnt und wo es endet. Ich mag den Unterschied vor dem $ bilden.

Hier ist meine aktuelle Aufforderung:

# 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} "
}

Bei meiner Suche fand ich A Prompt die Breite der Zeit die einige fill tut, aber nicht, dass es für diese besondere Aufforderung arbeiten werden könnten.

War es hilfreich?

Lösung

Wenn Ihr Weg ist zu kurz ([ ${#newPWD} -le ${pwd_length} ]), können Sie printf (1), sie zu verlängern.

printf -v newPWD "%-*s" $pwd_length "$newPWD"

Dies wird links rechtfertigt die Zeichenfolge in $newPWD mit einer Feldbreite von $pwd_length.

printf (1) in bash eingebaut ist, so ist es nicht zu teuer jede Eingabeaufforderung ausgeführt werden.

Andere Tipps

Sie können die Umgebungsvariable BASH_COMMAND gesetzt, die die Aufforderung manuell zu definieren. Sie können expand -t verwenden, um es auf die gewünschte Länge zu erhalten.

Was ich getan habe, ist Position mein Verzeichnis und so oben meine Aufforderung, so habe ich keine Sorgen zu machen über sie:

myusername@mybox:/home/myusername/some/directory
$ 

Auf diese Weise kann ich auch den zusätzlichen Vorteil hat, kopieren Sie die Zeile oben für SCP und SSH-Befehle, ohne den Benutzer prepend @ host:. / Verzeichnis Beispiel

Hier ist mein $ PS1 Variable, sollten Sie es ausprobieren:

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top