(2 risposte)
Chiuso 4 anni fa.
Ho aggiunto quanto segue al mio ~/.bashrc
:
export PS1="\e[0;35m[\[email protected]\h \W]\$ \e[m "
echo -e "\e[0;35mYOU ARE ON THE LIVE SERVER !!\e[0m"
purtroppo, ora, ogni volta che incollo qualcosa di lungo in bash diventa squiffy e fantasma tab
i personaggi appaiono su tutto lo schermo e le linee si mangiano a vicenda, qualcuno sa perché?
Risposta accettata:
In passato ho anche avuto il problema dei codici colore ANSI che incasinavano la navigazione della riga di comando; devi mettere i codici ANSI intorno a \[ \]
affinché la shell dei comandi sappia come (non) tenerne conto come parte della stringa di input.
Come in:
export PS1="\[\e[0;35m\][\[email protected]\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"
Qualche spiegazione sul motivo per cui la shell ha bisogno di \[
e \]
:Per disegnare il prompt nelle posizioni corrette nella matrice dei caratteri di un terminale, la shell deve conoscere la lunghezza corretta della stringa del prompt che è la quantità di stampabile personaggi, i. e. non controlla i caratteri o le sequenze di caratteri.
Tuttavia, la shell non sa quali sequenze di caratteri il terminale considera stampabili. Pertanto è necessario fornire suggerimenti alla shell per distinguere tra sequenze stampabili e non stampabili, che è lo scopo di \[
e \]
.