J'ai personnalisé mon bash avec ceci dans mon bashrc
export PS1="\e[0;36m\h\e[m \e[0;33m\w/\e[m \e[0;31m\n\$ →\e[m "
Donc, je reçois quelque chose comme ça (avec des colors):
Ahuri ~/Public/ $ →
Mais j'ai des problèmes avec les longues commands. Quand j'écris une command très longue qui est plus longue qu'une ligne, elle commence à écraser ma première ligne
Exemple :
Ahuri ~/Public/ $ → ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Si je continue à append "^" je reçois:
Ahuri ~/Public/ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mon "$ →" est écrasé, puis toute la ligne est écrasée.
Il n'y a aucun problème avec le \n
. C'est encore l'ancien problème de longueur de séquence d'échappement: \e[0m
et similaire ne consortingbuent pas à la longueur réelle de l'invite, donc vous devez les inclure dans \[
.. \]
pour l'indiquer à l'interpréteur:
PS1="\[\e[0;36m\]\h\[\e[m\] \[\e[0;33m\]\w/\[\e[m\]\n \[\e[0;31m\]\$ →\[\e[m\] "
Utilisez $PROMPT_COMMAND
pour afficher la ligne supplémentaire afin que vous n'ayez pas \n
dans $PS1
.
Une option plus simple consiste à utiliser les séquences tput
:
export PS1='\[$(tput setaf 4)\]\h\[$(tput sgr0)\] \[$(tput setaf 3)\]\w/\[$(tput sgr0)\]\n\[$(tput setaf 1)\]\$ →\[$(tput sgr0)\] '