当我输入“?”时在外壳中,它变成“ \?”,为什么?

时间:2019-10-13 11:42:48

标签: shell

我正在AWS上使用Ubuntu。

我正在尝试输入:

curl https://www.google.com/?1

但是它总能得到这个:

curl https://www.google.com/\?1

还有一个反斜杠\

为什么会这样?如果我在curl之后没有输入此内容,那么\将不会显示。 curl如何修改我的shell?

1 个答案:

答案 0 :(得分:1)

问号在外壳中具有特殊含义。反斜杠在外壳程序中也具有特殊含义:它是一个转义字符,可从后面的字符中删除特殊含义。

您似乎只想将问号用作问号,而没有其特殊含义。因此,您必须对其进行转义,即在其中添加反斜杠。否则,您输入的命令将具有不同的含义,并且可能不会执行您打算执行的操作。

  

为什么会这样?

您的shell似乎试图通过为您添加反斜杠来帮助您。如果您100%确定要想要问号的特殊行为,则只需删除反斜杠即可。

如果您100%确保始终 比编写shell的程序员更了解shell的工作原理,那么我可以肯定,有一些方法可以关闭此功能。

注意:执行此操作的可能不是完全 外壳。 Shell更有可能支持某些挂钩函数来帮助输入,并且您已经设置了一个挂钩函数来为您进行这些修改。

  

curl如何修改我的shell?

不是。简单的基本逻辑告诉您不可能 curl正在执行此操作,因为它发生在 输入命令时。显然,在您按下Enter键之前,curl甚至没有运行,因此很显然如果它没有运行,它将无法执行任何操作。