在 Rails 控制台会话中,命令行不允许我输入

Jon*_*man 1 ruby bash terminal ruby-on-rails

在 Rails 控制台中,我输入了一个 Active Record 查询,它占据了超过整个屏幕的空间,因此它正在滚动。我忘记按 来q退出,而是按Ctrl-C。我遇到了一些错误,然后我得到了一些 Rails 控制台输出,然后我再次点击 ^C,然后我的提示出现了......

但我无法输入任何内容。嗯,实际上我可以打字,但我什么也看不到。

如果我输入它exit,它将退出 Rails 控制台并让我返回到提示符,然后如果我输入,rails c我将返回到我的控制台。除了我刚才提到的打字内容在我打字时都不会出现在屏幕上。

当我回到控制台后,我仍然看不到我正在输入的内容。我必须打开一个新终端。

我在许多不同的场景中都遇到过这种情况,可能都是我的反射以错误的方式退出进程(比如用 ^C 而不是 q),这只是我可以确定的第一个场景。

有谁知道如何解决这个问题,而不必放弃我的工作并打开一个新终端?

dro*_*oro 5

您输入的内容或控制台中查询的输出内容已禁用或重定向 shell 中的“echo”设置 - 因此,您仍然可以输入命令,但只是看不到它们。如果 Active Record 查询返回二进制数据,则很可能二进制数据的某些字节恰好是更改了回显设置的转义码。同样重要的是要认识到,如果您的回声设置发生变化,其他设置很可能也会发生变化。

如果您在 shell 提示符下,只需键入 unix 命令reset即可恢复正常设置。但是,如果您仍在 Rails 控制台中,则需要输入:

system 'reset'
Run Code Online (Sandbox Code Playgroud)

从 Ruby 运行该命令。