2011-09-25 11 views
6

Ho trovato un fastidioso bug mentre coloravo il prompt del mio terminale. Se ho impostato la mia richiesta di uno di colore, come ad esempioL'impostazione dei colori nel terminale porta a un limite di caratteri straniero

export PS1='\e[1;34m[\e[0;31m\D{%Hh%M} \e[0;32m\u\e[[email protected]\e[0;35m\h\e[0m:\e[0;36m\w\e[1;34m]\e[0m $ ' 

poi inizia a rompersi quando ho un po 'formato nella linea di entrata:

enter image description here

In altre parole, quando la mia linea raggiunge un certo limite, ricomincia da solo! Una volta che riempio la stessa linea, allora funziona bene, andando alla riga successiva.

Qualcuno ha mai visto questo problema? hai una soluzione? Il problema si verifica anche in iTerm.

+1

La sintassi è atroce. A colpo d'occhio, non hai una parentesi graffa per chiudere tutto (prima dei $). Ci sono altri problemi Suggerisco di ricominciare. Ecco una guida alla colorazione: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/ –

+1

Nota a margine: quando personalizzi il prompt, usa '\ $' piuttosto che un segno di dollaro letterale. Bash mostrerà il carattere prompt appropriato ('$' per gli utenti normali, '#' per root). –

+0

Un altro consiglio di stile: non eseguire sequenze di escape con hard-code (mi rendo conto che la maggior parte delle persone lo fa, ma non dovrebbero farlo). Invece, usa 'tput' per emettere i codici appropriati per il terminale corrente, in modo che funzioni appropriatamente con vari terminali. In particolare, non produrrà nulla se il terminale non supporta i colori/stili nel prompt, piuttosto che emettere caratteri che potrebbero confondere il terminale. ad esempio, 'PS1 =" \ [$ (tput setaf 1) \] \ h: \ W \ [$ (tput sgr0) \] \ u \ $ "' visualizzerà il nome host e la directory di lavoro in rosso. –

risposta

5

Questo è un duplicato di Mac Terminal.app annoying bug - How to fix it? da StackOverflow. Il problema è che è necessario circondare i caratteri di controllo del terminale tra parentesi quadre \[ … \] in modo che la bash shell non li contenga durante il calcolo della lunghezza del prompt dei comandi.

Poiché si tratta di una domanda generica di shell/terminale e non specifica per Mac OS X o Terminal, è consigliabile migrare a StackOverflow e duplicare l'altra domanda. (Tuttavia, non ho il privilegio di farlo.)

+3

Buona risposta, ma penso che sia accettabile lasciarla su Ask Different poiché gli utenti Apple con questo problema hanno meno probabilità di andare a StackOverflow per una risposta – conorgriffin

Problemi correlati