【发布时间】:2016-09-30 03:38:04
【问题描述】:
我发现我可以通过在我的 .bashrc 文件中包含以下指令来让光标闪烁:
echo -ne "\x1b[1 q"
但我也想更改闪烁光标的颜色。我知道我的终端支持颜色,因为我可以设置提示颜色并以颜色打印文本,但我无法更改光标颜色。有什么建议吗?
我正在添加以下评论,我知道如何更改终端上显示的文本颜色,但这与更改光标颜色不同。所以that other question 没有解决我的问题。
但我确实在我的终端仿真器软件中找到了一种解决方法,如下所示。 感谢您的反馈,尤其是关于选择正确的转义码可在终端类型之间移植的部分。
【问题讨论】:
-
旁白:
echo -ne是错误的形式;请考虑printf。请参阅pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html 处的echo的POSIX 规范——-n是允许的,但行为未定义,除了在输出上打印文字文本-e之外,-e的任何行为都是完全不允许的。虽然 bash 的 echo 默认情况下是不合规的,但它并非总是不合规;例如,设置了xpg_echo和posix选项后,它变得合规,因此不应依赖它偏离的地方。 -
...不过,更大的问题是转义码是特定于终端的。您不应该在您的软件或配置中硬编码它们 - 获取它们的正确方法是通过为您当前的 TERM 环境变量查找正确值的代码。
-
查看
echo -e "\e]12;red\a" -
同样,您的终端是否支持更改光标颜色是也终端特定的,查找特定代码需要知道
TERM的实际值。跨度> -
@MohamedSlama,
printf %b '\e]12;red\a',如果你希望它可以移植到不同的 shell。 (它已经不能移植到不同的终端,但是如果不进行 termcap/terminfo 查找,这种便携性是不可能的)。
标签: bash