Linux 为什么';的值';是否根据我的当前目录进行更改?

Linux 为什么';的值';是否根据我的当前目录进行更改?,linux,bash,ubuntu,Linux,Bash,Ubuntu,我的电脑上有一个奇怪的文件夹,叫做template/(我相信它是我在raspberry pi上做一些低级编程时创建的)。奇怪的是,如果我在文件夹中,我运行命令 $echo -n ? | hexdump 它显示 0000000 000d 0000001 但是,如果我在任何其他文件夹中,该命令如下所示 $echo -n ? | hexdump 0000000 003f

我的电脑上有一个奇怪的文件夹,叫做template/(我相信它是我在raspberry pi上做一些低级编程时创建的)。奇怪的是,如果我在文件夹中,我运行命令

$echo -n ? | hexdump
它显示

0000000 000d                                   
0000001
但是,如果我在任何其他文件夹中,该命令如下所示

$echo -n ? | hexdump
0000000 003f                                   
0000001
为什么“?”的值在该文件夹中更改,而仅在该文件夹中更改

我应该注意到,我发现这一点的原因是模板/文件夹中有一个名为“?”的文件,它导致了我正在编写的一些php出现问题。我试图在其他地方重新创建它,但发现我无法

为什么“?”的值在该文件夹中更改,而仅在该文件夹中更改。

是shell globbing中的一个特殊字符

匹配任何字符,
echo?
将匹配并列出当前目录中长度正好为1个字符的任何文件名。

PS:如果目录没有任何1个字符的文件名,则它将回显文本

为什么“?”的值在该文件夹中更改,而仅在该文件夹中更改。

是shell globbing中的一个特殊字符

匹配任何字符,
echo?
将匹配并列出当前目录中长度正好为1个字符的任何文件名。


PS:如果目录没有任何1个字符的文件名,则它将回显文本

表达式
回显?
首先由处理。它用任何单字符文件名(如果存在)替换
。如果没有这样的文件,它将保留

示例(有两个文件具有单字符文件名):

或(无单字符文件)

因此,如果您只想呈现一个
字符,则需要对其进行转义:

$ echo \?
?
$ echo '?'
?
$ echo "?"
?

我希望这有点帮助…

表达式
echo?
由first处理。它用任何单字符文件名(如果存在)替换
。如果没有这样的文件,它将保留

示例(有两个文件具有单字符文件名):

或(无单字符文件)

因此,如果您只想呈现一个
字符,则需要对其进行转义:

$ echo \?
?
$ echo '?'
?
$ echo "?"
?

我希望这有点帮助…

啊,这很有道理,谢谢你。它让我感到困惑,因为它仍然显示一个“?”,但该文件名的值肯定是13。是的,正如我编写的
一样,它将恰好匹配一个字符文件名。如果当前目录中不存在1个字符文件,那么它将打印literal
Ahh,这非常有意义,谢谢。它让我感到困惑,因为它仍然显示一个“?”,但该文件名的值肯定是13。是的,正如我编写的
一样,它将恰好匹配一个字符文件名。如果当前目录中不存在1个字符文件,则它将打印文本
$ echo \?
?
$ echo '?'
?
$ echo "?"
?