玩过 curl 后,我的终端中转储了一个二进制文件。例如,水平线: ? 我用来格式化我的提示被 'q' 代替,它可能会更糟。
为什么会发生这种情况,如何在不关闭终端的情况下修复它?
某些命令行界面工具在取消时返回损坏的控制台CTRL+C。有时文本是不可见的,或者在我运行命令之前存在图形问题reset。
(我使用 bash,但希望它独立于 shell。)
这个效果有名字吗?是什么导致了这种情况,程序员如何在工具中防止这种情况发生?在主要的编程语言中是否有解决这个问题的策略?
我最近才开始使用 tmux,并且遇到过几次这个问题。
无论我在命令行上输入什么,在我按下回车键并被执行之前,它都是隐藏的。我不知道我是如何触发这个的,并且在手册中找不到任何关于“隐藏输入”的提及。我试过 setw -g monitor-activity on 和 set -g visual-activity on ,但似乎这些是为了别的东西。
需要明确的是,如果输入正确,我可以运行程序或命令——例如 python manage.py runserver 可以工作,但是当我输入它时——没有键出现。这与您输入 PostgreSQL 或类似密码时相同。命令确实显示在历史记录中,并且可以在命令执行后看到(在当前行上方)。
通常可以看到,如果一个可执行文件被cated,只要它是一个巨大的文件,它就会不断更改 'PuTTY 的标题,application直到它完成将二进制文件打印到STDOUT带有那些奇怪字符的 ',前缀strace似乎无助于了解。
到底发生了什么,导致了这一切?只是好奇。
运行 bash 脚本后,我的(gnome-)终端最终打印了最后一行结束的每一新行(但在下一行)。我认为它printf破坏了东西,因为如果我替换printf为 ,它就可以工作echo。您知道这可能是什么,以及如何在不关闭终端会话的情况下修复它吗?
出于安全原因,我无法提供脚本。当我有时间时,我会看看是否可以创建一个最小的损坏示例来展示。
如果你做一些愚蠢的事情,比如cat /var/log/wtmp你的终端可能会像屏幕截图所示那样搞砸。我知道有很多方法可以解决这个问题。那篇文章中没有提到的方法之一是运行屏幕截图中红色框中突出显示的命令,这是我几年前被告知的。
head /bin/ls
Run Code Online (Sandbox Code Playgroud)
这有效。
为什么?
当使用具有异常 tui 的应用程序或打印不支持的字符/终端序列时,通常会发生光标/终端无法正确显示的情况。
在那一刻,我通常会这样做,但clear && reset在工作时,它无法将光标重置为通常状态,除非我关闭并重新打开终端(发生在我尝试过的大多数终端,xterm,st,urxvt等)
我尝试了帖子上推荐的大部分技巧,例如这个,以及其他类似的技巧,它们无法将光标重置为其初始状态(例如:保持不可见)
有什么推荐的方法可以重置光标的状态,而无需关闭/重新打开终端吗?