命令和输出的不同颜色

raj*_*raj 15 linux terminal colors

我想知道是否可以将 linux 中命令输出的颜色更改为与我输入的命令行颜色不同的颜色。它很单调,很难找到输出的开始位置。喜欢,

@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/
Run Code Online (Sandbox Code Playgroud)

谢谢

l0b*_*0b0 7

您可以将输出传递给执行着色的程序。例如,有这样的程序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)

更多关于颜色输出。


Aar*_*ler 5

并不真地; 给定程序输出的颜色由命令控制,而不是由终端控制。

也就是说,假设您的终端理解颜色的 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)

请记住,由于您正在为提示后的所有内容设置默认颜色,因此您运行的未通过转义码设置自己颜色的程序将采用该颜色——例如,如果您运行寻呼机,您可能会看到它的输出颜色与您为其他命令设置的颜色相同。同时,该指令通过转义码设置自己的颜色会完全忽视你的努力。