神秘的 > 提示缺少右撇号

神秘的 > 提示缺少右撇号

如果我输入例如

grep 'needle
>

我被发送到一个神秘的>提示,其中ctrl- C(或重新启动终端)似乎是唯一的出路。

  1. 这是什么提示?
  2. ctrl为什么我输入-时它不会终止Z
  3. 为什么它不能更好地设计来检测被困的新手?当然,也许在某些荒谬的极端情况下,打开此>提示然后输入类似 的内容是有原因的"quit\nexit\nhelp\nCTRL-Z\nlogout\n",但如果用户开始输入这些内容,Ubuntu 至少应该发出一条有用的响应消息(例如,“您是否试图退出此提示?如果是,请使用CTRL- C。如果不是,请忽略此消息。”)这不会干扰提示所服务的任何奇怪目的。

答案1

这是因为您打开了一个引号("'),因此 shell 假定命令正在继续,这个字符表示什么>。因此,直到结束引号,您都会收到>提示以完成已启动的命令。

当您想要回显其中包含换行符的内容时,例如:

user@host:~$ echo "this
> is a text
> with multiple
> newlines"

输出:

this
is a text
with multiple
newlines

要中止,您也可以按Ctrl+ c

答案2

没什么神秘的。该提示符 ( >) 表明 shell 正在等待第二个引号'和文件名来完成命令。如果您想搜索,'needle请使用:

grep \'needle filename

并且Control+Z用于暂停工作,但是您没有仅通过输入 来启动任何工作grep 'needle

第三点,我想说,对于真正使用终端的用户来说,这听起来很荒谬。另外:您认为终端如何检测某人是否是新手?如果有人真的想输入这些字符串:“退出、帮助、注销”怎么办?

也可以看看:

答案3

提示符只是标准输入。' 字符被解释为“字符串的开头”,因此它接受结束的 '。当您在结束 ' 之前按下回车键时,它被解释为换行符。您可以继续写您想要的内容。当您输入 ' 并按下回车键时,它会获取您编写的整个字符串

相关内容