在哪里以及如何 Bash 将字符串转换为颜色
Where and How Bash convert strings to colors
我正在 GNU repository 开发 Bash 5.0。我想找到 Bash 读取具有 ASCII 颜色的字符串并将其转换为颜色的位置,例如在以下情况下将“Hello”转换为红色:
root@ubuntu:~/Desktop/bash-5.0# ./bash
root@ubuntu:~/Desktop/bash-5.0# echo $BASH_VERSION
5.0.0(8)-release
root@ubuntu:~/Desktop/bash-5.0# ./bash -c 'echo -e "3[31mHello\e[0m World"'
Hello World
我在源代码里面搜索了一下,发现有两个文件好像是相关的:
但它们 不是 ,它们仅在我第一次加载时起作用 Bash 并且您需要在文件 ~/.inputrc
中写入以下行让它工作:
set colored-completion-prefix on
set colored-stats on
知道代码 Bash 中的哪个字符串采用 "3[31mHello"
这样的字符串并将其转换为红色吗?
将任何东西转换为颜色的不是 shell,而是您的 终端。 shell 仅输出 ANSI escape codes,然后由终端拾取。
根据您的观点和哲学解释,3[31mHello
已经 是 彩色字符串(至少 shell 是)
我正在 GNU repository 开发 Bash 5.0。我想找到 Bash 读取具有 ASCII 颜色的字符串并将其转换为颜色的位置,例如在以下情况下将“Hello”转换为红色:
root@ubuntu:~/Desktop/bash-5.0# ./bash
root@ubuntu:~/Desktop/bash-5.0# echo $BASH_VERSION
5.0.0(8)-release
root@ubuntu:~/Desktop/bash-5.0# ./bash -c 'echo -e "3[31mHello\e[0m World"'
Hello World
我在源代码里面搜索了一下,发现有两个文件好像是相关的:
但它们 不是 ,它们仅在我第一次加载时起作用 Bash 并且您需要在文件 ~/.inputrc
中写入以下行让它工作:
set colored-completion-prefix on
set colored-stats on
知道代码 Bash 中的哪个字符串采用 "3[31mHello"
这样的字符串并将其转换为红色吗?
将任何东西转换为颜色的不是 shell,而是您的 终端。 shell 仅输出 ANSI escape codes,然后由终端拾取。
根据您的观点和哲学解释,3[31mHello
已经 是 彩色字符串(至少 shell 是)