我看到有人可以使bash shell中的输出显示为五颜六色。不仅要突出显示错误或警告,还要执行'ls'时的目录。如何让bash shell显示丰富多彩的文字?
有没有人可以告诉我如何做到这一点?非常感谢。
我看到有人可以使bash shell中的输出显示为五颜六色。不仅要突出显示错误或警告,还要执行'ls'时的目录。如何让bash shell显示丰富多彩的文字?
有没有人可以告诉我如何做到这一点?非常感谢。
这些东西都是在DOS的时代。使用ANSI转义序列或代码:
http://wiki.bash-hackers.org/scripting/terminalcodes
用法示例:
这将打印ABC绿色字体:
ESCAPE=$'\e'
echo "${ESCAPE}[0;32mABC${ESCAPE}[0m"
您还可以使用-e选项:
echo -e "\e[0;32mABC\e[0m"
或者printf的:
printf "\e[0;32mABC\e[0m\n"
检查出一些我主要是在脚本here代码使用。
使用ANSI转义序列设置像前景文本属性和 背景颜色。
实例: -
echo -e "\e[1;34mThis is a blue text.\e[0m"
和
#!/bin/bash
# tputcolors
echo
echo -e "$(tput bold) reg bld und tput-command-colors$(tput sgr0)"
for i in $(seq 1 7); do
echo " $(tput setaf $i)Text$(tput sgr0) $(tput bold)$(tput setaf $i)Text$(tput sgr0) $(tput sgr 0 1)$(tput setaf $i)Text$(tput sgr0) \$(tput setaf $i)"
done
echo ' Bold $(tput bold)'
echo ' Underline $(tput sgr 0 1)'
echo ' Reset $(tput sgr0)'
echo
在ls
具体情况:
如果您使用的Linux发行版,几乎全部来与牛奶ls
,你可能已经有彩色输出。如果您没有,请尝试ls -C
或ls --color=auto
。您可能需要设置$LS_COLORS
;请参阅man dircolors
以便轻松完成。
但可能你是在Mac OS X上,它使用不同版本的ls
。如果您的终端输出颜色,则可能会使用ls -G
获得彩色ls
输出,但是您可能还需要设置$LSCOLORS
。此外,您可能需要export CLICOLOR=1
才能让终端显示颜色。有关更多信息,请参见伴侣网站上的this answer。
这里有一点背景,如果你有兴趣。
正如其他人已经指出的,终端响应所谓的转义序列。这些是可以发送给终端的字符序列(写入,显示),而不是显示这些字符,终端硬件将它们解释为执行各种操作的命令。这些东西可以是任何东西,从移动光标到闪烁,改变前景和背景颜色。当需要调用某些终端功能时,这是任何终端程序所做的事情(无论是vi,emacs,ls还是bash)。
问题是,有许多不同种类的终端,它们具有不同的功能,并对不同的转义序列作出响应。早期,人们想出了一个处理这个问题的机制。他们提出了termcap,然后是terminfo,这是一种抽象终端功能的方法。因此,您可以执行诸如“移动光标”或“设置前景色”之类的内容,并且底层库从为不同终端维护的数据库中检索正确的转义序列(基于TERM环境变量的值等)。
因此,你有着名的诅咒图书馆。它可以让你做到这一切。对于bash之类的东西,他们已经将这个功能封装在一个可以调用的命令中,称为tput。如何调用它的man page give you the details。所以,最好不要直接使用转义序列。但是,你应该通过输入,以保持独立于你正在使用的终端。
看看这个链接:http://stackoverflow.com/questions/2437976/get-color-output-in-bash – user000001