muy*_*tan 2 colors bash terminal
在Windows操作系统上,我可以只敲入color a或color b或color c等临时更改字体颜色在终端。
在 bash 终端中是否有执行此操作的命令?
我不想做永久性的改变,只为公开会议就足够了。
你指的是一个命令,一个期望值0-F(即0〜15十进制)。类似的命令将使用tput:
tput setaf 10
Run Code Online (Sandbox Code Playgroud)
(“a”是 10 的十六进制),对于前景色和
tput setab 10
Run Code Online (Sandbox Code Playgroud)
为背景颜色。这些是单独的terminfo功能。
该示例假设您的终端描述至少有 16 种颜色。如果只有8个,tput不会注意到,但结果会不尽人意。你可以看到这个
tput colors
Run Code Online (Sandbox Code Playgroud)
默认情况下,tput使用的当前值$TERM来选择终端描述。您可以使用-T选项覆盖它。例如,如果您正在使用xterm(而不是其他设置TERM为“xterm”的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
Run Code Online (Sandbox Code Playgroud)
和 xterm 中的屏幕截图: