为什么我有时会在终端中反复提示“>”?

为什么我有时会在终端中反复提示“>”?

好吧,当我以错误的方式运行某些命令时(拼写错误等),终端会输出:>而不是computername:workingfolder username$,当我输入 Enter 时,它会像这样:

>

>

>

如果我按 Enter 键 3 次,那就是这样。

答案1

>是默认的继续提示。如果您之前输入的内容有不平衡的引号,您将看到该提示。

例如,在命令行中键入单引号,后跟几个enter键:

$ '
> 
> 
> 

将出现继续提示,直到您

  • (a) 用右引号完成命令

    或者

  • (b) 输入Ctrl+D完成输入,此时 shell 将响应一条有关不平衡引号的错误消息,

    或者

  • (c) 输入Ctrl+ C,这将中止您正在输入的命令。

这有什么用

有时,您可能想要输入一个包含嵌入换行符的字符串。您可以按如下方式执行此操作:

$ paragraph='first line
> second line
> third line
> end'

现在,当我们显示该 shell 变量时,您可以看到提示已消失,但换行符被保留:

$ echo "$paragraph"
first line
second line
third line
end

答案2

如果您的命令中有未闭合的引号,就会发生这种情况。就像这样:

$ echo "test here
>
>
...

您可以通过关闭报价来退出该模式(写一个"',或任何您打开的报价)。它也可以是大括号分隔的块、部分完整的for-dowhile-do循环、或某些其他结构。您也可以按Ctrl-C取消该命令(然后按Up修改)。

有时可能会在没有明显丢失引号的情况下发生这种情况范围或者历史扩展发生在您意想不到的地方。


>是你的PS2(“辅助提示”)值。您可以将其更改为其他内容以提醒您发生了什么:

PS2="Unclosed >"

在你的.bashrc遗嘱中,让它打印Unclosed >在每行的开头。

答案3

除了其他答案之外,当您键入 a\作为一行中的最后一个字符时,您还会收到继续提示。

答案4

shell 等待您完成命令。也许某处有未结束的引用,或者它认为您正在启动“for”循环并等待用户完成输入

相关内容