解释几乎同时出现的 Enter 和反斜杠键

解释几乎同时出现的 Enter 和反斜杠键

我输入了一条mv命令,打算按下Enter按键。也许我几乎同时按下了反斜杠键。如果该Enter键是第一个,则带有绿色提示的新行应出现在反斜杠的左侧(之前)。相反,反斜杠位于绿色提示的左侧。

还有第二个反斜杠,也许它开始了转义序列。为什么我平时的提示颜色是绿色,但提示颜色却变成了白色?我不确定我是否输入了第二个反斜杠,或者它是否是“错误的第二个回显”。

文件移动成功,但此查询只是为了检查是否在奇怪的地方没有创建无关的文件。 “移动”意味着一个文件将被移动到一个地方,因此似乎不会创建无关的文件。

图像

答案1

相反,反斜杠位于绿色提示的左侧。

因为你输入的反斜杠打印出来了输出了提示。然后输出提示符,并且将你输入的反斜杠添加到其中。

为什么我平时的提示颜色是绿色,但提示颜色却变成了白色?

因为您的$PS1是绿色的,但是您的$PS2,即等待行完成时显示的内容,却不是。一旦该行完成(因为行末尾的反斜杠继续该行),提示符将返回到$PS1

答案2

我的测试表明,如果我Enter几乎同时按下 和 反斜杠键,则可以重现这种情况。假设键盘完好“去抖”(链接到有关去抖的信息)然后只输入了一个反斜杠,因此实际上存在“虚假的第二个回声”。

可以通过退格键“删除” (单个) 反斜杠键,但两个回声中只有一个会消失。按下退格键时,绿色提示符右侧的回声会消失。绿色提示符左侧的回声无法删除。显然我没有“删除”它,而是继续Enter再次使用该键。该backslash Enter对是一个行延续序列,可在脚本内部使用,但显然也可以交互使用。正如@IgnacioVazquez-Abrams 所述,提示符将成为分配给续行的提示符,而在我的情况下,它的外观恰好与我通常的绿色提示符不同。

在我的测试中,如果使用退格键“删除”反斜杠(即使仅删除两个回显之一),则不会继续行。这是通过使用退格键“删除”反斜杠然后按下按键来演示的Enter。在我的测试中,提示符保持绿色,这意味着没有形成行连续序列。

mv命令不受反斜杠的影响,因为该Enter键是在反斜杠之前稍微按下的。证明这一点的是反斜杠出现在新行上(尽管在绿色提示之前),这意味着Enter,它作为换行符回显,显然是首先被按下的。由于该mv命令不受反斜杠的影响,因此不会创建意外的文件。

我相信我在使用时也看到过类似的行为ssh,而且我打字速度很快。远程主机无法尽快提示输入密码,因此我的部分密码会回显到密码提示的左侧,也可能会回显到密码提示的右侧。我不记得密码是在两个地方都被混淆了还是只在提示的右侧被混淆了。

相关内容