Windows 的“颜色 a”、“颜色 b”在 bash 终端上等效

Windows 的“颜色 a”、“颜色 b”在 bash 终端上等效

在 Windows 操作系统上,我可以仅输入color acolor bcolor c来临时更改终端中的字体颜色。

bash 终端中有执行此操作的命令吗?

我不想做永久性的改变,只要公开会议就足够了。

答案1

你指的是命令期望值为 0-f(即十进制 0 到 15)。类似的命令将使用tput

tput setaf 10

(“a”是 10 的十六进制),对于前景颜色和

tput setab 10

为了背景颜色。这些是分开的术语信息能力。

该示例假设您的终端描述至少有 16 种颜色。如果只有8个,tput不会注意到,但结果会不理想。你可以通过以下方式看到这个

tput colors

默认情况下,tput使用 的当前值来$TERM选择终端描述。您可以使用该-T选项覆盖它。例如,如果您正在使用xterm(与设置为“xterm”的其他终端相反TERM),您可以使用xterm-16color终端描述,如以下屏幕截图所示:

在此输入图像描述

(您可能会看到tput第 15 行没有任何有用的效果,这是预期的,因为10超出 8 种颜色的范围)。

终端描述,是否xterm或者xterm-16color(或者xterm-256color) 讲述tput如何创建可写入终端的转义序列。您的 bash 提示符也可能会发送转义序列,设置或重置颜色。如果您tput在 shell 脚本中调用并回显文本,您可能会看到彩色文本,而相同的命令(由 bash 提示符分隔)的行为方式可能不同。此外,某些程序(例如ls)会设置/重置颜色。这些不同的应用程序只能共享一种终端的颜色状态;终端不会自动在它们之间切换。

测试 shell 脚本比依赖 shell 提示符的详细信息更具可预测性。这是一个例子

#!/bin/sh
case $TERM in
xterm*)
        TERM=xterm-256color
        ;;
linux*)
        TERM=linux-16color
        ;;
esac
export TERM
for p in $(seq 0 15)
do
        tput setab $p
        for q in $(seq 0 15)
        do
                tput setaf $q
                printf '%x%x' $p $q
        done
        tput sgr0
        printf '\n'
done

以及 xterm 中的屏幕截图:

在此输入图像描述

相关内容