混乱的终端


1

有时我会弄乱我的终端,直到我键入“ clear”为止。这以各种方式发生,有时是在编写单个命令时,有时是在文本编辑器中编辑某些内容时。现在我有了Mac OS X Lion,但是我记得几年前有这个问题,即使我仍在使用Solaris。

这是我设法重现的一种情况。如果我用cURL弄错了:

Bemmu-Sepponens-MacBook-Pro:b2 bemmu$ curl --data abcde=foo efghijk=bar http://localhost:1234/do_something_cool
curl: (6) Couldn't resolve host 'efghijk=bar'
foo Bemmu-Sepponens-MacBook-Pro:b2 bemmu$

Curl输出“ foo”和错误消息。现在,如果按向上箭头返回以编辑该命令,则它首先变为:

Bemmu-Sepponens-MacBook-Pro:b2 bemmu$ curl --data abcde=foo efghijk=bar http://localhost:1234/do_something_cool
curl: (6) Couldn't resolve host 'efghijk=bar'
foo Bemmu-Sepponens-MacBook-Pro:b2 bemmu$ curl --data abcde=foo efghijk=bar http://localhost:1234/do_something_cool

一切看起来仍然不错,但请注意,前一行放在了cURL的“ foo”之后。现在,如果我尝试按向左箭头足够多的时间到达错误发生的地方并开始输入,事情就会变得混乱:

foo Bemmu-Sepponens-MacBook-Pro:b2 bemmu$ curl --data abcde=foo&ijk=bar http://localhost:1234/do_something_cool

我所要做的就是在“ abcde = foo”之后立即转到该位置,然后按一下退格键,然后放入“&”号。它应该已经变成了“ abcde = foo&fghijk = bar”,但是却变成了“ abcde = foo&ijk = bar”。

这是正常现象吗,还是我在某处设置有误?

Answers:


1

如果在之后curl无法输出换行符,这在某种程度上是可以预期的foo。您可以尝试按⌃C一次,然后再按编辑命令。


还要注意,您应该转义数据字符串,这样不会将&符解释为在后台运行作业的命令。

例如:

charon:~ werner$ curl --data abcde=foo&efghijk=bar http://localhost:3000/
[1] 96980
-bash: http://localhost:3000/: No such file or directory

[1]指示的工作置于后台,即这一项:

[1]+  Exit 2                  curl --data abcde=foo

因此,在“&”号处,您的命令被截断了。相反,您可以做的是- &用反斜杠转义。

charon:~ werner$ curl --data abcde=foo\&efghijk=bar http://localhost:3000/

另外,您也可以将数据字符串放在单引号中以防止任何扩展

charon:~ werner$ curl --data 'abcde=foo&efghijk=bar' http://localhost:3000/

嗨,是的,实际上我知道&符问题,只是以该行为例,而没有检查它是否确实有效。
Bemmu 2012年

1

您可以通过输入以下命令来重置OS X以及我使用过的所有其他* nix上的终端:

echo ^V ESC c

在您的终端中。^ V表示“保持控制并按下'V'键”,“ ESC”只是按退出键,而“ c”显然是“ c”键。

您正在做的是使回声吐出转义序列。

^ V表示将您按的下一个键(在这种情况下为ESC)逐字输入到终端中(不按ESC不会执行太多操作),以下“ c”为实际代码。您可以在此处获得完整列表:http : //ascii-table.com/ansi-escape-sequences-vt-100.php

这是一个硬重置,因此尽管您有时可能会盲目输入,但它几乎可以解决终端可能陷入的任何疯狂现象。

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.