命令和输出有不同的颜色

命令和输出有不同的颜色

我想知道是否可以将 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}

相关内容