如何更改 bash 提示符中的颜色

如何更改 bash 提示符中的颜色

我已遵循说明这里并在如何链接那里提供了。但是似乎没有任何地方说我可以如何更改不同部分的颜色,因为目前我将其设置为:

PS1='${debian_chroot:+($debian_chroot)}[\t] \u@\h:\w\$ '

但文本仍然全是白色的,我怎样才能将时间数字变为绿色,将用户名和计算机名称变为浅蓝色?我正在运行 Ubuntu GNOME 15.04。

答案1

首先,打开你的 ~/.bashrc 文件并启用颜色提示:

nano ~/.bashrc

取消注释该行#force_color_prompt=yes

然后直接更改PS1线在下面线if [ "$color_prompt" = yes ]; then

到:

PS1='${debian_chroot:+($debian_chroot)}\[\033[00;32m\][\t] \[\033[01;34m\]\u@\h:\w\$ '  

如您所见,01:34m 为浅蓝色,00:32m 为绿色。浅绿色应为 01:32m,而不是 00:32m。

CTRL+o然后按ENTER保存文件。按CTRL+x退出 nano。

然后,运行以下命令,通过“获取”您的 .bashrc 文件来应用更改:

. ~/.bashrc

这些更改现在应该应用于您的用户下的每个新打开的终端。

点击这里查看更多信息

答案2

这是我和朋友一直在研究的一个问题。当您是普通用户时,它会显示一条灰色虚线,而如果您以 root 用户身份运行命令,虚线和文本都会变成红色。

在此处输入图片描述

在您的.bashrc文件中,将以下代码添加到文件底部:

if [ -f "$HOME/.bash_ps1" ]; then
    . "$HOME/.bash_ps1"
fi

编辑:另外,也将其添加到 的底部/root/.bashrc。这适用于root通过发出命令切换到用户的情况sudo su -(其余的编辑在代码下方继续)

然后将其余代码复制并粘贴到名为/home/<username>/.bash_ps1

# Fill with minuses
# (this is recalculated every time the prompt is shown in function prompt_command):
fill="--- "

reset_style='\[\033[00m\]'

# determine if root or not
a=$(id|awk -F\( '{print $1}')
if [ "$a" = "uid=0" ]
then
    # for root
    status_style=$reset_style'\[\033[1;31m\]' # bold red; use 0;37m for lighter color
    command_style=$reset_style'\[\033[1;31m\]' # bold red
else
    # for other users
    status_style=$reset_style'\[\033[0;90m\]' # gray color; use 0;37m for lighter color
    command_style=$reset_style'\[\033[1;29m\]' # bold black
fi
prompt_style=$reset_style

# Prompt variable:

PS1="$status_style"'$fill $(date +"%m/%d/%y ")\t\n'"$prompt_style"'${debian_chroot:+($debian_chroot)}\u@\h:\w\$'"$command_style "

# Reset color for command output
# (this one is invoked every time before a command is executed):
trap 'echo -ne "\033[00m"' DEBUG

function prompt_command {
# create a $fill of all screen width minus the time string and a space:
let fillsize=${COLUMNS}-18
fill=""
while [ "$fillsize" -gt "0" ]
do
    fill="-${fill}" # fill with underscores to work on
    let fillsize=${fillsize}-1
done

# If this is an xterm set the title to user@host:dir
case "$TERM" in
    xterm*|rxvt*)
    bname=$(basename "${PWD/$HOME/~}")
    echo -ne "\033]0;${bname}: ${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
    ;;
    *)
    ;;
esac
}

PROMPT_COMMAND=prompt_command

编辑(第 2 部分):.bash_ps1现在在您的/root文件夹中创建一个链接

sudo -s
cd /root
ln -s /home/<username>/.bash_ps1

您可以更改上述任何代码以满足您的需求。这是我在工作中实际使用的代码,这样我就可以知道我是否以用户身份输入了root可能存在危险的命令。此外,时间戳会出现在您输入的每一行上方,如果您向后滚动查看输入该命令的时间,会更容易一些。

希望这有帮助!

相关内容