难道猫/ dev / urandom-终端坏了


31

出于好奇,当您的shell字符集无法执行类似的操作时,cat /dev/urandom是否有一种方法可以解决该问题?


6
当然...不要那样做!另外,如果你认为一个命令可能会产生无效字符,请使用cat -A
jnylen 2013年

2
此外,我一直很好奇如何cat破坏您的角色集...
crasic

cat / bin / ls通常会解决此问题(不确定原因)
skarface

2
@crasic:它将二进制文件发送到终端,每个终端都有通过接收特殊字符来更改字体/颜色/等的方式。见奇妙:linusakesson.net/programming/tty。(又名” TTY揭秘)根据你的TERM设置,它会产生不同的反应太(当然,这取决于什么字节接收和以什么顺序)
奥利维尔·杜拉克

@skarface:您可能很幸运/ bin / ls的二进制文件在结尾处具有固定显示的字节序列。这将取决于操作系统上,二进制(即哪个版本,使用什么编译optino等),以及你的终端......的期限设置,所以我强烈建议你使用“stty的理智”,而不是^^
奥利维尔·杜拉克

Answers:


50

尝试以下方法之一:

stty sane

要么

reset

如果两者都不起作用,或者您的终端混乱不堪,甚至无法输入命令,那么最好关闭终端并启动一个新终端。

请注意,它stty sane是由POSIX定义的,reset没有。这意味着在某些系统上可能没有reset或可能会做一些完全不同的事情,例如重置整个系统。我还没有遇到没有的系统reset

有关更多背景信息,请阅读“ Linux键盘和控制台HOWTO”一章“重置终端”


我给了你正确的答案,因为你是第一个。对不起其他。
Pedro MontotoGarcía2013年

通常,向终端写入随机字节不太可能使它陷入需要精打细算的情况。这更有可能来自程序崩溃。
2013年

stty sane是正确的方法(出于我在lain的回答下方的评论中所述的原因,我对“重置”感到厌倦)
Olivier Dulac 2013年

1
@OlivierDulac感谢您分享经验。我研究并了解到resetPOSIX并未定义。
lesmana

1
@Iain我不认为@OlivierDulac正在传播FUD。reset不安全的引用是POSIX未定义的事实。请停止传播@OlivierDulac正在传播FUD的FUD。
lesmana

20

您可以尝试使用reset命令。


4
您链接了手册页,隐含地推荐一个好的RTFM。今天你是我的英雄,谢谢。
Luke404

这在许多Unix上都可以使用...但是有一点警告:要小心:在某些系统上(例如,其他操作系统,或者其他发行版的Linux?),这可能正在启动系统重置(例如,我相信它确实在一些版本的solaris)。因此,请重置系统,即强制重新引导(没有适当的关闭)...像执行任何命令一样,请小心。(其他命令也是如此:例如,某些“ tar”不会删除“ /”前缀,因此会覆盖敏感文件等。请始终确保您知道要使用的命令如何在您的系统上工作)
Olivier Dulac

1
@OlivierDulac; OP将他的问题标记为linux,因此他得到了以Linux为中心的答案,尽管它可以在包括Solaris在内的其他unix系统上正常工作。我在Solaris上工作了15年!您正在将SPARC Open Boot Prom reset命令与userland reset(1)命令混淆。如果您在ok提示符下发出重置命令,则您不太可能从损坏的终端中恢复。
user9517支持GoFundMonica

@lain:嗯,的确是这个(Open Boot舞会)。但是,这仍然意味着在某些环境下“重置”与重置主机相关联,因此我更喜欢人们(即使他们在Linux上“大部分”)来学习/使用“安全”“ stty sane”命令(其中指出了什么)确实如此,并且不像“重置”那样含糊不清。)这就是为什么我在警告读者这一点。
奥利维尔·杜拉克

@OlivierDulac Solaris,CentOS,Ubuntu,OpenBSD的所有链接都重置为tset-请提供有关错误信息的证据,而不是忘记某些内容。OBP不是主机操作系统,因此不算在内。
user9517支持GoFundMonica

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.