Can I change the input color of my bash prompt to something different than the terminal default

后端 未结 4 455
醉话见心
醉话见心 2020-12-03 15:38

My default terminal color is gray, that\'s fine.

My bash prompt displays a bunch of colors, this works fine:

PS1=\"${COLOR_RED}\\u${COLOR_WHITE}@${CO         


        
相关标签:
4条回答
  • 2020-12-03 16:04

    Try this one, it is simpler:

    export PS1="\e[0;32m\t \e[32;1m\u@\h:\e[0;36m\w\e[0m$ "

    0 讨论(0)
  • 2020-12-03 16:07

    Simply add the following line:

    export PS1=" \[\033[34m\]\u@\h \[\033[33m\]\w\[\033[31m\]\[\033[00m\] $ "
    

    Preview:

    This is my preferred colors. You can customize each part of prompt's color by changing m codes (e.g. 34m) which are ANSI color codes.

    List of ANSI Color codes:

    • Black: 30m
    • Red: 31m
    • Green: 32m
    • Yellow: 33m
    • Blue: 34m
    • Purple: 35m
    • Cyan: 36m
    • White: 37m
    0 讨论(0)
  • 2020-12-03 16:11

    I would suggest changing your terminal emulator's settings. It appears you are using iTerm2 (if you are on iTerm, I suggest looking at iTerm2), so:

    Settings -> Profiles -> Your Profile -> Color. Under 'basic colors' adjust 'foreground'

    For just changing the color of the input text, in zsh you could use a

    preexec () { echo -ne "\e[0m" }
    

    Source 1

    I have found a hack-ish way to try this with bash:

    Not natively, but it can be hacked up using the DEBUG trap. This code sets up preexec and precmd functions similar to zsh. The command line is passed as a single argument to preexec.

    Here is a simplified version of the code to set up a precmd function that is executed before running each command.

    preexec () { :; }
    preexec_invoke_exec () {
        [ -n "$COMP_LINE" ] && return  # do nothing if completing
        local this_command=$(history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g");
        preexec "$this_command"
    }
    

    trap 'preexec_invoke_exec' DEBUG This trick is due to Glyph Lefkowitz; thanks to [bcat] for locating the original author.

    http://www.macosxhints.com/dlfiles/preexec.bash.txt

    Source 2

    0 讨论(0)
  • 2020-12-03 16:18

    I found that in my installation of Debian 8 I already have this but it is commented by default, it is

    # uncomment for a colored prompt, if the terminal has the capability; turned
    # off by default to not distract the user: the focus in a terminal window
    # should be on the output of commands, not on the prompt
    force_color_prompt=yes
    
    if [ -n "$force_color_prompt" ]; then
        if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
            # We have color support; assume it's compliant with Ecma-48
            # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
            # a case would tend to support setf rather than setaf.)
            color_prompt=yes
        else
            color_prompt=
        fi
    fi
    
    if [ "$color_prompt" = yes ]; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
    unset color_prompt force_color_prompt
    

    I just uncommented the line that says force_color_prompt=yes

    If you didn't already have this in your .bashrc then you can copy this and paste it in yours.

    0 讨论(0)
提交回复
热议问题