On Wed, Sep 28, 2011 at 9:22 AM, <bfsc...@gmail.com> wrote: > 13 PROMPT_COMMAND=' > 14 if (($?)); then > 15 warn="^[[31mWARNING^[[m" > 16 else > 17 warn= > 18 fi > 19 date=`date` > 20 > PS1="^[[s^[[$(($COLUMNS-28))C^[[0;33m$date^[[u^[[0;31m$warn^[[0;32m[^[[1;33m\u^[[0;32m@^[[1;36m\w^[[0;32m]\$^[[m" > 21 ' > > i'm using this PROMPT_COMMAND to set PS1 everytime it is played, it seems to > work perfectly except later i found a strange behavior of the terminal, both > in xterm under X and agetty under the console. for example, when under the > console, i found the terminal column indicated by the bash variable $COLUMNS > is 160, however, when i type some command about 50 characters long, the line > which i'm typing wraps to the begining, and destroys what i typed earlier, > this makes typing long commands really difficult...and everything is just > fine when i just set the PS1 variable to a very simple value without escape > sequences. > anyone knows how to fix this? >
Put \[ and \] around all the sections that don't actually print things to the terminal, so bash knows not to count them when determining how long the prompt is.