这就是我的bash提示过去的样子。
然后我做了一些可能不太聪明的事情,我做了cat /bin/bash
。现在我的bash提示符看起来像这样,用井号(£)代替了井号(#)。它甚至会影响文件中的哈希符号,请参见此处:
任何想法如何还原此?
编辑:此问题不会询问“如何更改我的bash提示?”,而是“我的bash提示本身已更改,如何恢复它?”
#
,\x23
; 只是终端现在解释\x23
为£
。
这就是我的bash提示过去的样子。
然后我做了一些可能不太聪明的事情,我做了cat /bin/bash
。现在我的bash提示符看起来像这样,用井号(£)代替了井号(#)。它甚至会影响文件中的哈希符号,请参见此处:
任何想法如何还原此?
编辑:此问题不会询问“如何更改我的bash提示?”,而是“我的bash提示本身已更改,如何恢复它?”
#
,\x23
; 只是终端现在解释\x23
为£
。
Answers:
终端接受并执行一堆不同的字符序列作为控制命令。例如,所有光标移动都使用这些完成。有些代码会进行永久性更改,例如设置颜色或告诉终端使用备用字符集。可执行文件和其他二进制文件可以很好地包含代表这些命令的字节,因此将二进制文件转储到终端会产生恼人的副作用。有关某些控制代码,请参见此处。
这样做的历史背景是,最初,终端是带屏幕和键盘的笨拙设备,它们通过串行端口连接到实际计算机。在此之前,他们是带有键盘的打印机。没有什么协议可以将数据字节与命令字节分开,因此命令被分配给终端“内联”。(或者更确切地说,转义码和控制字符是协议。)人们可能会认为,如果今天设计了该系统,则数据和命令之间的分隔会更加清晰。
您不仅可以关闭终端窗口或杀死仿真器,还可以使用reset
command,该命令发送一个(或多个)类似的命令将终端重置为默认的默认设置。
我不知道到底是什么会导致哈希变化。(但是@ Random832确实,请参见他们的答案。)我对“替代字符集”更为熟悉,该字符集可以将所有字符更改为画线的字形。即使发生这种情况,键盘输入通常也不会改变,因此reset
Enter即使字符显示为垃圾字符或根本不显示字符,书写仍然可以进行。(与您的提示变成一串提示相比,您的影响很小。)
cat /dev/urandom
在Debian安装控制台中尝试时(考虑到使砖砌硬件成为现实的屏幕分辨率),我以为触发了溢出,并迅速导航到“放弃所有更改,重新启动机器”按钮。现在,我知道这是一个“预期功能”。
作为记录,回答为什么发生这种情况以及如何在不关闭终端的情况下进行修复(如果reset
失败):
作为正在仿真的VT220终端的一个功能,许多终端都支持许多基于ISO 646和ISO 2022的国家替换字符集。特别是,由于某些原因,即使不支持其他原因,这也很常见,因为它们支持英国字符集,该字符集的英镑货币符号与ASCII具有数字符号的位置相同。
因此,当您在终端上打印一个二进制文件时,它会巧合地将序列ESC ( A
[或也许ESC ) A
和^N
] 输出到终端。可以通过打印将其设置为正常状态的序列来手动撤消此操作:
printf '\e(B\e)0\x0f'
ESC % @
处于该状态时不支持其他序列(除外)。用于支持UTF-8。因此,随着更多的应用程序被迫使用UTF-8进行线条绘制,它们可能最终消失[这是该功能最广泛使用的实际用法,主要包含其他字符集,因为当您实现该机制时,它是“免费的” ]。
¤
用于$
]为@,然后英国版发生在美国的人之前就搞定了。itscj.ipsj.or.jp/itscj_english/index.html,以获取所有列表。
关闭终端并打开一个新终端。
£
作为同项下坐在#
只有这就是所谓的用Alt
。不知何故Alt
住在巴什。无论如何,您可以等待适当的解释,或者对我的回答满意,请单击检查以接受它。
cat
编/bin/bash
到终端。
reset
是完成这项工作的正确工具。
无需关闭,重新打开或重置终端!虽然重置将起作用,但这不是正确的方法!
您只需要清除/擦除终端回滚缓冲区。为此,只需使用以下命令:
$ echo -ne '\0033\0143'
-e
生效时,它会通过运行能认出你可以阅读一些序列man echo
,其中之一是\0NNN
它代表与八进制值NNN字节。实际上,您不需要重置终端会话,只需要清除回滚缓冲区即可。我说的命令将完成所需的工作。例如,如果您使用的是MacOS X,则在使用终端时在菜单栏中有一个“编辑”,并且有一个选项“清除回滚或⌥⌘K”。