我基于十六进制的组合做了这个小文件,它可以破坏 cat 和显示带有 cat 文件的终端;重置不再有效,它可能将猫置于某种循环中?请问有人可以解释一下吗?它不会引起任何问题,但不要在生产中运行它,因为它可能会产生一些我没有看到的副作用:
执行命令“cat brocat”,你就会看到。
也许这是 cat 的安全问题,它可以执行任意代码?
再比如:cat /usr/bin/vi 可以执行一些最后找不到的命令!
有没有更安全的运行cat的方法?
答案1
您可以cat -v /usr/bin/vi
让它将不可打印的字符打印为 ASCII 表示形式,而不是终端可能尝试处理的实际控制字符。这能解决你的问题吗?
答案2
你真的不应该“cat”任意文件。即使该文件不是恶意的,这也是一个坏主意。
您可以通过运行“文件”程序来确定文件“类型”,例如file /usr/bin/vi
。无论如何,使用“cat”都是低级的。也许尝试使用“更多”或“更少”。当我尝试时,more /usr/bin/vi
我得到了/usr/bin/vi: Not a text file
。
另外,您可以使用“reset(1)”命令重置终端,但resetC-J
如果终端最终处于原始模式,您可能必须键入 ,即字符串“reset”后跟“control-J”。