这种情况发生在Linux上,而不是Mac上.当我使用tput setaf
然后tput sgr0
,光标仍然保留在先前选择的颜色,直到我再次按回车.我可以通过相同的方式重置它echo ''
,但这并不理想,因为它为我创建了一个新的线.使用printf
也没有用.
如何重置shell中的光标颜色?
tput sgr0
Run Code Online (Sandbox Code Playgroud)
将设置恢复为默认颜色 - 它对我来说很好(我不需要另一个回声).
为了解决您的情况,我建议使用此代码:
tput setaf 2 && echo -en 'Name: ' && tput sgr0 && echo ""
Run Code Online (Sandbox Code Playgroud)
echo -n -e '\e[?0c'
Run Code Online (Sandbox Code Playgroud)
截至今天,当前版本的ge tty(包含在[util-linux 中是提供大多数核心命令的Linuxutil-linux 2.27.1
软件包,例如login
, su
, mount
, more
, kill
- 仅举几例] - 如果您的 Linux 内核版本是>=4.4) 的行为与尚未更新的 kernel.org 文档(VGA 的软件光标)中描述的行为不同。
考虑
echo -n -e '\e[?
字节1 字节;
2;
字节3c'
字节1:
+---------------+---------------+
| high nibble | low nibble |
+---+-----------+-----------+---+
|msb| | |lsb|
+---+---+---+---+---+---+---+---+
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+---+---+---+---+---+---+---+---+
| | | |
| | | +-+
| | | | These bits specify the 8
| | +-----+-> possible blinking HW carets
| | |
| +---------+
|
+---------------> When set, this bit enables SW
caret instead of HW caret
Run Code Online (Sandbox Code Playgroud)
字节2(SW插入符):
+-----------------> A pretty useless mask applied
| to bits in byte3
+---------------+---------------+
| high nibble | low nibble |
+---+-----------+-----------+---+
|msb| | |lsb|
+---+---+---+---+---+---+---+---+
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+---+---+---+---+---+---+---+---+
Run Code Online (Sandbox Code Playgroud)
byte3(SW 插入符):
+---------------+---------------+
| high nibble | low nibble |
+---+-----------+-----------+---+
|msb| | |lsb|
+---+---+---+---+---+---+---+---+
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+---+---+---+---+---+---+---+---+
| | | |
| | | +-------------------> Highlighting
| | |
| | +---------------------+
| | |
| +-------------------------+-> Color
| |
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)
突出显示:突出显示插入符号下方的字符(例如,将其更改为白色 [真正闪亮的白色],而不是深白色 [TTY 通常默认的浅灰色])。
颜色:插入符的颜色。请注意,与我们都知道和喜爱的 ANSI 颜色代码的通常顺序相比,位是相反的,因此,对于这个三元组,第 7 个是 L sb,第 5 个是M sb。
因此,在 70 年代,ANSI 定义了以下颜色代码,为 TTY、各种 Linux 终端、控制台等设置了普遍采用的事实上的标准
000 (0) black
001 (1) red
010 (2) green
011 (3) yellow or dark yellow
100 (4) blue or dark blue
101 (5) magenta, purple or violet
110 (6) cyan or light blue
111 (7) white or dark white (light gray)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们有相反的情况
000 (0) black
100 (4) red
010 (2) green
110 (6) yellow or dark yellow
001 (1) blue or dark blue
101 (5) magenta, purple or violet
011 (3) cyan or light blue
111 (7) white or dark white (light gray)
Run Code Online (Sandbox Code Playgroud)
(括号内为八进制值)
所以,清单如下:
#Hardware carets (blinking and [dark ]white)
echo -n -e '\e[?0c' #default caret
echo -n -e '\e[?1c' #invisible caret
echo -n -e '\e[?2c' #underscore caret
echo -n -e '\e[?3c' #thicker underscore caret
echo -n -e '\e[?4c' #smaller block caret
echo -n -e '\e[?5c' #small block caret
echo -n -e '\e[?6c' #big block caret
echo -n -e '\e[?7c' #biggest block caret
#On my Linux machine, both 6 and 7 are the big rectangular full-size block caret
#Software carets (non-blinking and colored)
echo -n -e '\e[?16;0;0c' #00001000 0 00000000 black (thus invisible on black background)
echo -n -e '\e[?16;0;128c'#00001000 0 10000000 red
echo -n -e '\e[?16;0;64c' #00001000 0 01000000 green
echo -n -e '\e[?16;0;192c'#00001000 0 11000000 yellow
echo -n -e '\e[?16;0;32c' #00001000 0 00100000 blue
echo -n -e '\e[?16;0;160c'#00001000 0 10100000 magenta
echo -n -e '\e[?16;0;96c' #00001000 0 01100000 cyan
echo -n -e '\e[?16;0;224c'#00001000 0 11100000 dim white
echo -n -e '\e[?16;0;16c' #00001000 0 00010000 black + highlighting
echo -n -e '\e[?16;0;144c'#00001000 0 10010000 red + highlighting
echo -n -e '\e[?16;0;80c' #00001000 0 01010000 green + highlighting
echo -n -e '\e[?16;0;208c'#00001000 0 11010000 yellow + highlighting
echo -n -e '\e[?16;0;48c' #00001000 0 00110000 blue + highlighting
echo -n -e '\e[?16;0;176c'#00001000 0 10110000 magenta + highlighting
echo -n -e '\e[?16;0;112c'#00001000 0 01110000 cyan + highlighting
echo -n -e '\e[?16;0;240c'#00001000 0 11110000 dim white + highlighting
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3110 次 |
最近记录: |