12

我的默认终端颜色是灰色,这很好。

我的 Bash 提示显示一堆颜色,这很好用:

PS1="${COLOR_RED}\u${COLOR_WHITE}@${COLOR_RED}${COMPUTERNAME} ${COLOR_BLUE}\w${GITPROMPT} ${COLOR_RESET}"

但是我在提示末尾输入的文本是灰色的。我希望它是白色的(ANSI 代码“[37m”)。

如果我在提示符末尾添加 COLOR_WHITE 而不是 COLOR_RESET,则默认终端颜色将变为白色,直到它被重置。这会产生一些灰色文本的奇怪效果,一些白色文本在顶部渗出。

如何将 Bash 提示的“输入文本”颜色更改为终端默认颜色以外的颜色?

4

4 回答 4

8

只需添加以下行:

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

预习:

在此处输入图像描述

这些是我喜欢的颜色。您可以通过更改作为 ANSI 颜色代码的m代码(例如)来自定义提示颜色的每个部分。34m

ANSI 颜色代码列表:

  • 黑色:30m
  • 红色:31m
  • 绿色:32m
  • 黄色:33m
  • 蓝色:34m
  • 紫色:35m
  • 青色:36m
  • 白色:37m
于 2018-01-11T21:44:14.303 回答
2

试试这个。它更简单:

export PS1="\e[0;32m\t \e[32;1m\u@\h:\e[0;36m\w\e[0m$ "
于 2013-05-31T19:11:11.207 回答
0

我建议更改终端模拟器的设置。

看来您正在使用iTerm2(如果您使用的是 iTerm,我建议您查看 iTerm2),因此:

设置个人资料您的个人资料颜色。在“基本颜色”下,调整“前景”。

只需更改输入文本的颜色,在 Z shell ( zsh) 中,您可以使用

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

来源 1

我找到了一种用 Bash 尝试这个的 hack-ish 方法:

不是原生的,但可以使用 DEBUG 陷阱破解它。此代码设置 preexec 和precmd类似于 zsh 的功能。命令行作为单个参数传递给 preexec。

这是一个简化版本的代码,用于设置在运行每个命令之前执行的 precmd 函数。

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"
}

陷阱 'preexec_invoke_exec' 调试
这个技巧是由于Glyph Lefkowitz ; 感谢 [bcat] 找到原作者。

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

来源 2

于 2013-05-19T15:30:40.520 回答
0

我发现在我安装的Debian 8 (Jessie) 中我已经有了这个,但默认情况下它是注释的。这是

# 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

我只是取消注释说force_color_prompt=yes.

如果您的.bashrc文件中还没有这个,那么您可以复制它并将其粘贴到您的文件中。

于 2017-05-05T21:21:45.630 回答