终端窗口中的文本颜色

Mar*_*tin 4 command-line 22.04

我输入的文本是否可以与终端响应的文本使用不同的颜色?我已经使用终端的首选项>未命名>颜色工具调整了文本颜色,但找不到任何方法为我的打字和终端的打字设置单独的颜色。谢谢。

ter*_*don 5

对的,这是可能的。您需要更改变量的值PS1,这就是设置提示的原因(通常类似于user@ubuntu /home/ $)。编辑~/.bashrc并找到此部分:

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
Run Code Online (Sandbox Code Playgroud)

接下来,您需要决定您想要什么颜色。我将在此示例中使用粗体,请参阅此处了解更多选项。因此,粗体的转义码是\e[01m,我们需要将其添加到变量的末尾PS1,以便提示后打印的所有内容(因此,您键入的任何内容)都将是粗体。

然后,我们需要在打印响应之前以某种方式再次将其关闭,我们可以通过“捕获”“重置颜色”命令(该命令是\e[0mDEBUG 信号)来做到这一点,使其在您执行命令时执行。

我意识到这不是很清楚,但这就是你想要的结果:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ \e[01m'
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

trap 'printf "\e[0m" "$_"' DEBUG
Run Code Online (Sandbox Code Playgroud)

这应该会给你这样的情况,你输入的内容是粗体的,但终端返回的不是:

显示粗体和非粗体文本的屏幕截图