0 colors bash stability output distributions
例如,我找到了这些方法,以简单的方式将彩色文本输出到屏幕:
RED="\033[0;31m" # Red color (via ANSI escape code);
NC='\033[0m' # No color (via ANSI escape code);
echo -e "${RED}This text is red. ${NC}" # -e flag allows backslash escapes;
Run Code Online (Sandbox Code Playgroud)
或者:
printf '\e[1;34m%-6s\e[m' "This is blue text"
Run Code Online (Sandbox Code Playgroud)
我还发现:
tput setaf 1; echo "this is red text"
Run Code Online (Sandbox Code Playgroud)
但我从未使用过tput,我不确定它是否随所有主要发行版(Debian、CetnOS、Arch 等)一起提供。
如何以一种简单的方式以给定的命名通用颜色(如“红色”)输出彩色文本,我可以指望在所有主要发行版上工作,而不使用“凌乱”颜色代码?
tput.我不确定 [that
tputis] 随所有主要发行版一起提供
它是 ncurses 的一部分,并与所有三个操作系统以及更多操作系统一起打包。
stableSotput setaf将适用于广泛的系统,但明显的条件是需要安装必需的软件包。
缺点是使用它最终仍然使用“非单词颜色代码”,因为一个人提供的数字是来自 ECMA-48 的 8 个标准颜色索引(在某些终端仿真器上可能有额外的 8 个事实上的标准颜色,并且通过在某些情况下使用 ISO 8613-6 索引颜色,最多可达 256 色)。
在抓手上,8 种标准的 ECMA-48 颜色是众所周知的,并且(例如)“6”作为颜色编号的含义并不是那么模糊。
setterm.但是,如果您正在寻找更多使用名称而不是数字的人类可读的命令,尽管只有英文,也有广泛的工具可以做到这一点。其中一个是setterm,其用法如下:
% setterm --前景红色;echo "这是红色文字"
的setterm,你会发现在Debian中,Fedora的的仓库和拱门是从util的Linux的工具集之一。该命令依赖于各种特定于 Linux 的东西来执行该命令可以执行的一些其他操作,当然它在 BSD 上不可用。工具集是特定于 Linux 的,不可移植,正如其名称所表明的那样。
此外,虽然其手册页声称已咨询 terminfo 数据库,但更改颜色是实际程序无法按文档工作的少数情况之一。它不咨询terminfo 中的setaf和setab功能。相反,该程序硬连线 ECMA-48 SGR 30–37,39,40–47,49 控制序列。
此外,它不支持从 8 到 15 的额外 8 个事实上的标准颜色索引。它没有跟上 Linux KVT 的功能,它确实支持“明亮”颜色,现在至少接受ISO 8613-6 索引和直接颜色控制序列(尽管它实际上并未实现完整的 24 位颜色)。
此外,由于该非常硬的代码中的错误,settermDebian Stable 中的 util-linux 版本在设置 colors 时不会发出正确的 SGR 序列。
setterm. 用户命令。迈克尔·凯里斯。2014-05。发现那个 bug 是激发我编写setterm替换程序的原因之一,我(巧合地)刚刚完成了它。我没有将那些(中等数量)特有的东西复制到 Linux 及其内核虚拟终端中。相反,我确实添加了一些 ECMA-48 的东西,这些东西已经存在了几十年,而 util-linuxsetterm没有(因为 Linux KVT 不支持 ECMA-48 的那部分,并且setterm其根源在于特定于 Linux KVT)。我还添加了 UTF-8,支持实际的 8 位 C1 控制字符(以及它们的 7 位别名)和 ISO 8613-6 直接颜色(如果已知终端类型支持它)。
当然,对于 BSD确实存在这种实现:
% 名; 打印环境术语 FreeBSD 收货人 % TERM=ansi setterm --7bit --foreground red|hexdump -C 00000000 1b 5b 33 31 6d |.[31m| 00000005 % setterm --7bit --foreground red|hexdump -C 00000000 1b 5b 33 38 3b 35 3b 31 6d |.[38;5;1m| 00000009 % setterm --7bit --foreground 192|hexdump -C 00000000 1b 5b 33 38 3b 35 3b 31 39 32 6d |.[38;5;192m| 0000000b % setterm --7bit --foreground '#00BEC119'|hexdump -C 00000000 1b 5b 33 38 3b 35 3b 31 39 31 6d |.[38;5;191m| 0000000b % TERM=vte-256color setterm --7bit --foreground '#00BEC119'|hexdump -C 00000000 1b 5b 33 38 3b 32 3b 31 39 30 3b 32 35 3b 31 39 |.[38;2;190;25;19| 00000010 33 6d |3m| 00000012 % TERM=ansi setterm --7bit --foreground '亮红色' --background '亮黄色'|hexdump -C 00000000 1b 5b 39 31 6d 1b 5b 31 30 33 6d |.[91m.[103m|] 0000000b % setterm --7bit --foreground '亮红色' --background '亮黄色'|hexdump -C 00000000 1b 5b 33 38 3b 35 3b 39 6d 1b 5b 34 38 3b 35 3b |.[38;5;9m.[48;5;| 00000010 31 31 6d |11m| 00000013 %
它在 nosh 工具集的 1.39 版中,在名为 的终端管理包中console-control-sequence,允许将其与 util-linux 并排使用。setterm命令的垫片名称由单独的垫片包提供。因此,如果您使用setterm更改颜色编写某些内容并且有人声称这是 Linux 特定的,那么您就知道将它们指向何处。我已经把手册页作为预览。
setterm. 小吃指南。软件。SGR 0不是“无颜色”。SGR 0 重置所有颜色和属性。实际上没有“无”颜色的概念。还有就是“默认”色彩,由SGR 39和49 SGR集的概念:
% setterm --7bit --foreground default --background default|hexdump -C 00000000 1b 5b 33 39 6d 1b 5b 34 39 6d |.[39m.[49m|] 0000000a %
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |