GNU/Linux >> Tutoriels Linux >  >> Linux

Après avoir édité le .bashrc, j'ai eu des fantômes dans l'invite ?

Cette question a déjà des réponses ici :Pourquoi mon invite bash est-elle boguée lorsque je parcours l'historique ? [dupliquer]

(2 réponses)
Fermé il y a 4 ans.

J'ai ajouté ce qui suit à mon ~/.bashrc :

export PS1="\e[0;35m[\[email protected]\h \W]\$ \e[m "
echo -e "\e[0;35mYOU ARE ON THE LIVE SERVER !!\e[0m"

malheureusement, maintenant, chaque fois que je colle quelque chose de long dans bash, ça tourne mal et fantôme tab des caractères apparaissent partout sur l'écran et les lignes se mangent, est-ce que quelqu'un sait pourquoi ?

Réponse acceptée :

J'ai également eu dans le passé le problème des codes de couleur ANSI gâchant la navigation en ligne de commande; vous devez mettre les codes ANSI autour de \[ \] afin que le shell de commande sache comment (ne pas) les prendre en compte dans le cadre de la chaîne d'entrée.

Comme dans :

export PS1="\[\e[0;35m\][\[email protected]\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"

Quelques explications sur la raison pour laquelle le shell a besoin de \[ et \]  :Pour dessiner l'invite dans les positions correctes dans la matrice de caractères d'un terminal, le shell doit connaître la longueur correcte de la chaîne d'invite qui est la quantité de imprimable personnages, c'est-à-dire e. ne contrôle pas les caractères ou les séquences de caractères.

Cependant, le shell ne sait pas quelles séquences de caractères le terminal considère comme imprimables. Par conséquent, il faut fournir des conseils au shell pour faire la distinction entre les séquences imprimables et non imprimables, ce qui est le but de \[ et \] .


Linux
  1. Le point de la commande externe `cd` ?

  2. Le but de .bashrc et comment ça marche ?

  3. Priorité des opérateurs logiques Shell &&, ||?

  4. La signification de $ ? Dans un script shell ?

  5. SELinux dans le monde réel

.bashrc contre .bash_profile

Qu'est-ce que le Shell sous Linux ?

Répertoire actuel abrégé dans l'invite du shell ?

La boucle while dans les scripts shell

Quelle est la meilleure façon de définir une variable d'environnement dans .bashrc ?

Que dois-je faire lorsque j'ai reçu le message d'erreur KEYEXPIRED après une mise à jour apt-get ?