raj*_*raj 15 linux terminal colors
我想知道是否可以将 linux 中命令输出的颜色更改为与我输入的命令行颜色不同的颜色。它很单调,很难找到输出的开始位置。喜欢,
@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以将输出传递给执行着色的程序。例如,有这样的程序pycolor
:
pycolor module.py
Run Code Online (Sandbox Code Playgroud)
要构建自己的:
red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"
Run Code Online (Sandbox Code Playgroud)
并不真地; 给定程序输出的颜色由命令控制,而不是由终端控制。
也就是说,假设您的终端理解颜色的 ANSI 转义码(大多数情况下),您可以使用转义码在提示的开头设置所需的提示颜色,并在最后设置所需的输出颜色;这将导致您的命令行也使用您为输出设置的任何颜色,但这可能与您要查找的内容一样接近。例如,以下内容:
$ export PS1='\[\033[00;35m\]\u\[\033[00m\]@\[\033[00;35m\]\H\[\033[00m\]:\[\033[00;33m\]\W\[\033[00m\] \$\[\033[00;34m '
Run Code Online (Sandbox Code Playgroud)
会给你一个提示,看起来像:
user@host:wd $ _
Run Code Online (Sandbox Code Playgroud)
'user' 和 'host' 为紫色,'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
Run Code Online (Sandbox Code Playgroud)
请记住,由于您正在为提示后的所有内容设置默认颜色,因此您运行的未通过转义码设置自己颜色的程序将采用该颜色——例如,如果您运行寻呼机,您可能会看到它的输出颜色与您为其他命令设置的颜色相同。同时,该指令也通过转义码设置自己的颜色会完全忽视你的努力。