我想知道是否可以将 Linux 中命令输出的颜色更改为与我输入的命令行不同的颜色。这有点单调,而且很难找到输出的开始位置。例如,
@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/
谢谢
答案1
并非如此;给定程序的输出颜色由命令控制,而不是由终端控制。
也就是说,假设您的终端能够理解颜色的 ANSI 转义码(大多数终端都能理解),您可以使用转义码在提示符的开头设置所需的提示颜色,并在提示符的结尾设置所需的输出颜色;这将导致您的命令行也采用您为输出设置的任何颜色,但这可能与您想要的结果最接近。例如,以下内容:
$ export PS1='\[\033[00;35m\]\u\[\033[00m\]@\[\033[00;35m\]\H\[\033[00m\]:\[\033[00;33m\]\W\[\033[00m\] \$\[\033[00;34m '
会给出如下提示:
user@host:wd $ _
“用户”和“主机”为紫色,“wd”(您的 cwd)为棕色(深黄色),“$”后面的所有内容为终端使用的浅蓝色。(默认 xterm 会将其渲染为青色;gnome-terminal 似乎默认为相当漂亮的矢车菊蓝色。)
实际的颜色代码,如 bash 所需格式所指定,例如,\[\033[00;35m\]
其中00;35
是实际颜色规范;前导00
很少改变,但可以产生 IIRC 粗体(01)、下划线(??)和反向视频(??)效果,而尾随的“35”是实际颜色,在本例中是紫色。
令人惊讶的是,很难找到一个合适的 ANSI 颜色代码列表,但前景色从 30 到 37,背景色从 40 到 47,如下所示:
color fg bg
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
purple 35 45
cyan 36 46
gray/white 37 47
请记住,由于您为提示后面的所有内容设置了默认颜色,因此您运行的未通过转义代码设置其自身颜色的程序将采用该颜色 - 例如,如果您运行分页器,您可能会看到其输出与您为其他命令设置的颜色相同。同时,命令做通过转义代码设置自己的颜色将完全忽略您的努力。
答案2
您可以将输出传递给进行着色的程序。例如,有以下程序pycolor
:
pycolor module.py
要构建自己的:
red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"
答案3
是的,我至少在 Linux 和 Mac OS 上使它适用于 bash。
首先,设置一些属性变量,并让 PS1 提示符离开终端设置所需的命令行属性,例如:
bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"
然后,使用在每个命令之前执行的 bash DEBUG 陷阱来更改命令输出的文本属性:
trap 'echo -ne "${none}"' DEBUG
答案4
将这些放入你的 .bashrc 文件中,然后在保存后执行 source 文件。
blk=$'\x1b[90m' # Sets text to black
red=$'\x1b[31m' # Sets text to red
grn=$'\x1b[92m' # Sets text to green
ylw=$'\x1b[93m' # Sets text to yellow
blu=$'\x1b[94m' # Sets text to blue
pur=$'\x1b[95m' # Sets text to purple
cyn=$'\x1b[96m' # Sets text to cyan
wht=$'\x1b[97m' # Sets text to white
rst=$'\x1b[0m' # resets to default terminal color
完成此操作后,您可以在终端中永久使用其中任何一个,或者直到您注释掉变量或将其完全删除。您可以在机器上的脚本中使用它们,也可以通过命令替换或其他方式使用它们。以下是我个人使用它们的示例:
echo -e "${red}This text is red.${rst}"
printf "${grn}This text is green.\n${rst"
我通常将它们与单个echo
和/或printf
命令一起使用,但您也可以使用它们为其他命令(例如命令)着色ping
。添加以下内容.bashrc
以获得效果。然后获取.bashrc
文件并运行cping
命令以使用ping
紫色文本。您可以将每个命令功能设置为使用您的终端支持的任何颜色。
# Add this to your .bashrc file
colored_ping() {
echo -e "${pur}$(ping $1)${rst}"
}
alias cping='colored_ping'
然后尝试:
user@linux:~# cping superuser.com
您的输出cping
将为紫色。如果您想在同一个输出中使用多种颜色,您可以用独特的方式添加它们。如何做完全取决于您。例如:
echo -e "${red}This is red and ${blu}this is blue and ${grn}this is green.${rst}