On 2017-11-11 03:28, Tom H wrote: > On Fri, Nov 10, 2017 at 10:15 PM, Steven Haigh <[log in to unmask]> wrote: >> >> For what its worth, I've been using this for years: >> PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\] >> \342\234\223\"; else echo \"\[\033[01;31m\]\342\234\227\"; fi) $(if [[ ${EUID} >> == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\ >> [\033[01;34m\] \w \$\[\033[00m\] " > > If you use single-quotes for PS1, you can use unescaped double-quotes > and dollar signs within it. It makes it more legible: > > PS1='\[\033[01;37m\]$? $(if [[ $? == 0 ]]; then echo > "\[\033[01;32m\]\342\234\223"; else echo > "\[\033[01;31m\]\342\234\227"; fi) $(if [[ ${EUID} == 0 ]]; then echo > "\[\033[01;31m\]\h"; else echo "\[\033[01;32m\]\u@\h"; > fi)\[\033[01;34m\] \w \$\[\033[00m\] ' > > You might be better off using "printf" (it's a bash builtin) because > "echo" might not interpret escapes depending on the bash or shell > options that are set. It works for him, apparently. So that's good. Now, in pedantic mode each of the \033 strings can be changed to \e for easier readability. {^_-}