1

我的计算机上有一个名为 template/ 的奇怪文件夹(我相信它是在我在树莓派上进行一些低级编程时创建的)。奇怪的是,如果我在文件夹中并运行命令

$echo -n ? | hexdump

它显示

0000000 000d                                   
0000001

但是,如果我在任何其他文件夹中,命令看起来像这样

$echo -n ? | hexdump
0000000 003f                                   
0000001

为什么'?'的值 更改该文件夹且仅更改该文件夹。

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

4

2 回答 2

4

Why does the value of '?' change in that folder and only that folder.

?是 shell 通配符中的一个特殊字符。

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

PS:如果一个目录没有任何 1 个字符的文件名,那么它将回显文字?

于 2013-11-07T10:47:56.250 回答
1

表达式首先echo ?处理。?如果存在,它将替换为任何单个字符的文件名。如果没有这样的文件,它仍然存在?

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

$ ls ?
b  c
$ echo ?
b c

或者(没有单个字符文件)

$ ls ?
ls: cannot access ?: No such file or directory
$ echo ?
?

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

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

我希望这个能有一点帮助...

于 2013-11-07T10:51:56.267 回答