我的计算机上有一个名为template /的奇怪文件夹(我相信它是在我在树莓派上做一些低级编程时创建的)。奇怪的是,如果我在文件夹中并运行命令
$echo -n ? | hexdump
显示
0000000 000d
0000001
但是,如果我在任何其他文件夹中,该命令看起来像这样
$echo -n ? | hexdump
0000000 003f
0000001
为什么'?'的价值更改该文件夹,只更改该文件夹。
我应该注意到我发现这个的原因是有一个名为'?'的文件在我写的一些PHP中导致问题的模板/文件夹中。我试图在其他地方重新创建它,但发现我无法做到。
答案 0 :(得分:4)
Why does the value of '?' change in that folder and only that folder.
?
是shell globbing中的特殊字符。
?
匹配任何字符,echo ?
将匹配并列出当前目录中的任何文件名,长度恰好为1个字符。
PS:如果某个目录没有任何1个字符的文件名,那么就会回显文字?
答案 1 :(得分:1)
表达式echo ?
首先由bash处理。它将?
替换为任何单个字符文件名(如果存在)。如果没有此类文件,则保留?
。
示例(有两个单字符文件名的文件):
$ ls ?
b c
$ echo ?
b c
或(没有单个字符文件)
$ ls ?
ls: cannot access ?: No such file or directory
$ echo ?
?
因此,如果您只想呈现一个?
字符,则需要将其转义:
$ echo \?
?
$ echo '?'
?
$ echo "?"
?
我希望这有点帮助...