如何在终端中的 \/ 之间添加颜色?
我正在终端中为我的 .profile
制作文本 ASCII 艺术,并尝试对其进行着色。起初,我打算使用cat
命令和heredoc
来打印我的艺术作品,但后来我无法让heredoc内部的颜色发挥作用。所以我进行了肮脏的修复,我对每一行使用echo -e
,然后对其进行着色。如果有更好的方法,请告诉我!现在,我遇到了这个问题。
完整图片:
_ _
__| |_ __ __ _| |__
/ _` | ' \/ _` | / /
\__,_|_|_|_\__,_|_\_\
我正在着色的部分:
/ _` | ' \/ _` | / /
着色:
echo -e "\033[37m/ _\` |\033[36m ' \\\033[1;35m/ _\` | / /";
输出:
/ _` | ' \033[1;35m/ _` | / /
如您所见,我试图在 \/
之间插入新颜色。 \
按字面意思处理 \033[1;35m
。有没有办法在不改变图像的情况下改变 \/
之间的颜色?
另外,我正在使用 Mac OSX Lion。
I am making text ASCII art for my .profile
in terminal, and trying to colorize it. At first I as going to use the cat
command and heredoc
for printing out my art, but then I couldn't get the colors inside of the heredoc to work. So I went with the dirty fix, I am using echo -e
for each line and then coloring it. If there's a better way, please let me know! Right now, I am having this problem.
Full picture:
_ _
__| |_ __ __ _| |__
/ _` | ' \/ _` | / /
\__,_|_|_|_\__,_|_\_\
Part that I am coloring:
/ _` | ' \/ _` | / /
Coloring:
echo -e "\033[37m/ _\` |\033[36m ' \\\033[1;35m/ _\` | / /";
Outputs:
/ _` | ' \033[1;35m/ _` | / /
As you can see, I am trying to insert a new color in between the \/
. The \
is treating the \033[1;35m
literally. Is there a way to color the change the color between the \/
without altering the image?
Also, I am using Mac OSX Lion.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 Bash 的
$'string'
功能来代替heredoc
,这样就可以直接使用 ANSI C 转义序列对输出进行着色。为了增加可读性,你可能想尝试Figlet。
http://rudix.org/packages-def.html#figlet
Instead of a
heredoc
you may use the$'string'
feature of Bash which makes it possible to directly use ANSI C escape sequences for colouring output.To increase readability you may want to try figlet.
http://rudix.org/packages-def.html#figlet
尝试使用 5 个小节而不是 3 个
\\\\\033[1;35m/
至于为什么,bash 将
\\\\
转义为\\ 然后 echo -e,再次将其转义为
\
。如果启用 set -x (跟踪模式),您将看到 bash 处理后执行的命令(设置 +x 以禁用它)。Try with 5 bars instead of 3
\\\\\033[1;35m/
As for why, bash escape
\\\\
to\\
then echo -e, escape it again to\
. If you enable set -x (trace mode) you will see the command executed after bash processing (set +x to disable it).简单地使用几行 POSIX printf
而不是搞乱所有讨厌的转义问题怎么样?
What about simply using a few lines of POSIX printf
instead of messing with all the pesky escape problems?