Question

Je voudrais mettre mon bash invite à une largeur fixe, et faire la différence dans l'espace avant le $, donc si long ou court, mes restes invite la même largeur:

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

À l'heure actuelle, dans un chemin de répertoire court, mon invite ressemble à quelque chose comme ceci:

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

une apparence de chemin de répertoire plus profond comme celui-ci:

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

Vous pouvez voir que je suis tronquée PWD au milieu pour que je puisse voir où le chemin commence et où elle se termine. Je voudrais faire la différence avant le $.

Voici mon message actuel:

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

Dans ma recherche, je l'ai trouvé Une invite la largeur de votre terme qui fait faire un peu de remplissage, mais n'a pas pu le faire fonctionner cette invite en particulier.

Était-ce utile?

La solution

Si votre chemin est trop court ([ ${#newPWD} -le ${pwd_length} ]), vous pouvez utiliser printf (1) pour l'étendre.

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

Cela gauche justifie la chaîne en $newPWD avec une largeur de champ de $pwd_length.

printf (1) est construit en bash il est pas trop cher pour exécuter chaque invite.

Autres conseils

Vous pouvez régler la BASH_COMMAND variable d'environnement, ce qui vous permet de définir manuellement l'invite. Vous pouvez utiliser expand -t pour obtenir la longueur désirée.

Qu'est-ce que je l'ai fait est la position de mon répertoire et comme ci-dessus mon invite, donc je n'ai pas à vous inquiéter à ce sujet:

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

De cette façon, je peux aussi avoir l'avantage supplémentaire de copier la ligne ci-dessus pour les commandes SCP et SSH sans avoir à préfixer l'utilisateur @ hôte:. / Exemple de répertoire

Voici ma variable $ PS1, si vous voulez l'essayer:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top