网上有很多教程/帖子(例如http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/)关于如何通过设置自定义 bash 中的提示符PS1
。有没有办法自定义我输入的命令的颜色/粗体?
换句话说,举个例子,我想要一个绿色提示、一个粗体蓝色命令,然后以默认颜色输出。在下面的示例中,我已经知道如何joe>
通过设置使“”显示为绿色、蓝色、粗体等PS1
。但是有什么办法可以让我的git status
显示变得粗体吗?
joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...
答案1
您必须在 PS1 之后留下一个颜色尾随(>
在您的示例中启动它),然后在运行命令之前使用 bash DEBUG
trap 清除颜色(但在 shell 中按 Enter 键之后)。尝试这样的操作:
shopt -s extdebug
trap "tput sgr0" DEBUG
答案2
为了完整起见,这里介绍如何在 bash 中设置提示颜色和命令行输入颜色。将这些行放入您的.bashrc
.
PS1='\[\e[1;34m\]\w\$ \[\e[0;32m\]'
trap 'printf \\e[0m' DEBUG
DEBUG 陷阱,如由克里斯·唐建议,用于重置文本属性。它的目的是为了调试,但是在执行用户输入的命令之前执行代码也很有用。
在提示设置中:
\[…\]
用于转义序列周围,以告诉 bash 它们不会占用任何屏幕空间(没有它们,当 bash 需要重新绘制提示时,屏幕将变得乱码)。\e[…m
其中…
是一个数字,或者更一般地说是由分号分隔的数字序列,是转义序列发送到终端以影响以下文本的颜色和其他属性。例如,1;34
设置粗体蓝色;0;32
重置所有属性,然后将颜色切换为绿色。调整口味。\w\$
打印当前目录和$
或#
。当然,您可以将其更改为您喜欢的任何内容,并根据需要在其间插入文本属性更改。- 最后有一个最终属性更改,它设置文本输入的颜色。
答案3
我刚刚学习 BASH 命令,我一直坐在这里玩我的版本中的颜色命令。我想出了这个解决方案:
使用这个命令:
PS1='\[\e[0:36m\]\h>\[\e[0;31m\]'
解构: PS1= :启动 PS1 命令
' ' :将命令包含在单引号中(因此 BASH 不认为这是它的命令)
\ :每个单独的命令都以此开头
[ ] :包含每个命令
\e(也可以是 \033 ASCII 转义字符):启动颜色命令
颜色命令位于它所应用的对象之前。
[\e[0;36m] : 青色
\h : 主机名
'>' : 在主机名之后打印
[\e[0;31m] :红色
显然,最后的红色命令使输入变成红色。只需根据您的喜好更改颜色即可,这就是您想要的。
另外,这个网站对我有一点帮助:
https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/
我的版本:GNU bash,v.4.2.46
小心,
黄鼠狼