Depois que eu editei meu .bashrc eu tenho fantasmas no meu prompt [duplicado]

7

Adicionei o seguinte ao meu ~/.bashrc :

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

infelizmente, agora, toda vez que eu colo algo longo no bash ele fica bem e os caracteres tab do fantasma aparecem em toda a tela, e as linhas comem umas às outras, alguém sabe por quê?

    
por Mr Heelis 02.05.2017 / 18:58

2 respostas

11

Eu também tive no passado o problema de códigos de cores ANSI atrapalhando a navegação pela linha de comando; você precisa colocar os códigos ANSI em torno de \[ \] para que o shell de comando saiba como (não) considerá-los como parte da string de entrada.

Como em:

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

Algumas explicações sobre por que o shell precisa de \[ e \] : Para desenhar o prompt nas posições corretas na matriz de caracteres de um terminal, o shell precisa saber o comprimento correto da cadeia de prompt, que é a quantidade de caracteres imprimíveis , i. e. não controla caracteres ou seqüências de caracteres.

No entanto, o shell não sabe quais seqüências de caracteres o terminal considera imprimível. Portanto, é necessário fornecer dicas para o shell para distinguir entre sequências imprimíveis e não imprimíveis, que é o objetivo de \[ e \] .

    
por 02.05.2017 / 19:12
3

Eu meio que o consertei Eu usei este link e fiz o caminho longo, é muito MAIS, mas se você dobrar clique nos elementos que você pode colori-los e funciona

Acabei com

   export PS1="\[3[38;5;129m\][\u@\h\[$(tput sgr0)\]\[3[38;5;15m\] \[$(tput sgr0)\]\[3[38;5;129m\]~]\$\[$(tput sgr0)\]\[3[38;5;15m\] \[$(tput sgr0)\]"
    
por 02.05.2017 / 19:14