在 bash 中如何更改命令提示符的颜色?

在 bash 中如何更改命令提示符的颜色?

可能的重复:
如何自定义.bashrc来配置命令提示符?

当我运行命令时,我经常很难找到命令输出的开头。解决此问题的一个简单方法是将命令提示符着色或加粗,以便我可以轻松地看到我离开的位置。如何?

答案1

这就是我所做的。我使用 tput(1) 而不是额外的转义语句,因为转义语句对于人类来说很难阅读。

这是来自我的 .bashrc

### Set the prompt like "username@hostname:~ $"
# See: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
# And: http://mywiki.wooledge.org/BashFAQ/037
# 'tput bold' will work regardless of the foreground and background colors.
# Place the tput output into variables, so they are only execd once.
bold=$(tput bold)
reset=$(tput sgr0)
export PS1="\u@\[$bold\]\h\[$reset\]:\w \$ "

这是另一种选择。这比转义序列更具可读性。

# Bash
red=$(tput setaf 1)
green=$(tput setaf 2)
blue=$(tput setaf 4)
reset=$(tput sgr0)
PS1='\[$red\]\u\[$reset\]@\[$green\]\h\[$reset\]:\[$blue\]\w\[$reset\]\$ '

答案2

为了便于使用,您可以首先将颜色映射到您的提示变量中.bashrc,然后在提示变量 ( $PS1) 中重用它:

第 1 步:映射颜色:

#~/.bashrc

# Color mapping
grey='\[\033[1;30m\]'
red='\[\033[0;31m\]'
RED='\[\033[1;31m\]'
green='\[\033[0;32m\]'
GREEN='\[\033[1;32m\]'
yellow='\[\033[0;33m\]'
YELLOW='\[\033[1;33m\]'
purple='\[\033[0;35m\]'
PURPLE='\[\033[1;35m\]'
white='\[\033[0;37m\]'
WHITE='\[\033[1;37m\]'
blue='\[\033[0;34m\]'
BLUE='\[\033[1;34m\]'
cyan='\[\033[0;36m\]'
CYAN='\[\033[1;36m\]'
NC='\[\033[0m\]'

步骤 2. 重新定义 PS1 变量:

PS1="$yellow[$CYAN\t$yellow][$red\H$yellow][$GREEN\w$grey$yellow]$NC# "

答案3

有一个很好的参考页面描述了如何为 bash 提示符着色Arch Linux 维基

它包括有关颜色、转义序列以及在提示中包含其他字符或打印信息(例如目录、主机等)的正确方法的信息。

举个例子,一个简单的提示,如:

PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '

可以分为以下几个要素:

\[\e[1;32m]- 绿色方括号 (1;32m)

[\u@h \W]- 用户名@主机名和当前工作目录的基本名称

\$- 提示(#如果 UID 为 0,则为 a)

\[e[0m\]- 文本重置转义信号表示颜色序列的结束。

使用这些序列,您可以构建色彩丰富、信息丰富的提示。

需要注意的是:如果您未能正确转义序列,则可能会对终端打印文本的能力造成严重破坏。

答案4

这是我的 .bashrc:

case $HOSTNAME in
    plato*) PSC="\e[1;33m" ;;
    *) PSC="\e[36m" ;;
esac

PS1="[\j]\[${PSC}\]\u@\h(\l) \[\e[37m\][ \w ]\[\e[00m\]\n\[\e[1m\]\#\[\e[0m\] \$ "

编辑口味。我的主工作站与其他主机也使用了不同的颜色。

相关内容