40 votes

L'Invite Du Shell De Ligne D'Emballage Problème

J'ai fait quelque chose pour rompre mon Shell Bash Invite dans OS X (10.5.7) à la Borne.

C'est la PS1 que j'avais configuré:

PS1='\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '

Aussi loin que je peux dire que j'ai la couleur de commandes s'échapper correctement. Cependant quand j'ai faites défiler vers le haut et vers le bas dans mon historique des commandes je reçois souvent des retour à la ligne des questions si l'historique des commandes enrouler sur plusieurs lignes.

J'ai simplifié mes invites à la suivante:

PS1='\[\e[1m\]\h:\w\$ \[\e[0m\]'
PS2='> '

Et je vois encore quelque chose comme:

localhost:~/Bibliothèque/Application Support/Firefox/Profiles/knpmxpup.Defau
lt/extensions/{1A2D0EC4-75F5-4c91-89C4-3656F6E44B68}$ expocd \{1A2D0EC4-7
5F5-4c91-89C4-3656F6E export PS1="\[
\e[1;32m\]\h\[\e[0m\]: librairie cd/Appl
ication\ Support/

J'ai aussi essayé de \033 au lieu de \e. J'ai juste inclus PS2 là-haut pour plus d'informations, je n'ai pas changé qu'à partir de l'installation par défaut. Si je supprimer complètement les codes de la couleur puis tout fonctionne bien, des idées?

50voto

Rob Points 1278

Je suis maintenant en utilisant ce PS1 avec le bon effet:


green=$(tput setaf 2)
blue=$(tput setaf 4)
bold=$(tput bold)
reset=$(tput sgr0)
PS1='\[$green$bold\]\h\[$reset\]:\[$blue$bold\]\w\[$reset\]\$ '

Le défilement à travers mon commandement, l'histoire apparaît pour gérer la ligne continue maintenant. Toutefois, dans l'intervalle, puisque cette question a été posée, j'ai aussi mis à jour mon OS X 10.6.3

21voto

willdye Points 457

Cette stackoverflow thread semble pertinent. Comme quelqu'un l'a noté dans ce thread, le Bash FAQ mywiki.wooledge.org explique comment citer correctement les codes de couleurs dans Bash questions (FAQ 53), et de l'invocation de terminal couleurs (FAQ 37).

8voto

TheBonsai Points 3112

Ligne habillage questions en Bash ne sont rien de nouveau. Consulter la liste de diffusion, peut-être il ya encore un autre bug à ce sujet.

Vous ne pouvez pas faire beaucoup plus que le marquage des caractères non imprimables, le reste doit être fait par l'incitation que code.

2voto

neuro Points 6590

Il semble que vous avez correctement échappé et clos de séquences.

Une solution de contournement j'utilise de toute façon il à ajouter un '\n' à la fin. Je trouve ça plus clair et d'atténuer tout problème avec emballage questions. Le exacte de la fin de ma PS1 est :

'\n\[\033[0;30m\]$\[\033[0m\]

Un excellent howto vous le savez sans doute :

Invite Bash howto

0voto

rcd Points 546

Voici la mienne: c'est la meilleure que j'ai trouvé, mais le site où je l'ai d'abord trouvé qu'il manquait un caractère d'échappement, menant à la ligne d'emballage question. J'ai bricolé avec elle et a finalement obtenu ce travail. Il montre votre utilisateur, le chemin et la direction générale de l'info avec un bon contraste, couleur-sage.

export PS1='\[\e[1;37m\]\[\e[1;32m\]\u\[\e[0;39m\]:\[\e[1;33m\]\w\[\e[0;39m\]\[\e[1;35m\]$(__git_ps1 " (%s)")\[\e[0;39m\] \[\e[1;37m\]|\[\e[0;39m\]\$'

Aussi, ajouter

GIT_PS1_SHOWDIRTYSTATE=true

Pour afficher un marqueur lorsqu'une branche est "sale" (les modifications soient validées existent)

export HISTCONTROL=ignoredups

Est également utile pour ignorer les doublons lors de défiler à travers bash histoire.

bind "set completion-ignore-case on" 

Aide aussi.

Enfin,

shopt -s checkwinsize

Peut être utile sur OSX si des problèmes persistent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X