在我最喜欢的一本 Linux 教科书中,我发现了这样一句话ls
:实用程序无法解释模糊文件引用。该参数大致如下:“第一个命令ls
使用 参数调用?old
。shell 将其扩展?old
为匹配的文件名 ,hold
并将该名称传递给ls
。第二个命令与第一个命令相同,只是 受?
保护'\'
。shell 无法将此问号识别为特殊字符,并将其传递给ls
。ls
也无法解释它:
$ ls ?old
hold
ls \?old
ls: ?old: No such file or directory
我的问题是:这里 Shell 因反斜杠而无法解释。因此,此示例仅表明使用反斜杠时,shell 和 都ls
无法解释模糊文件引用。它并不能证明不使用反斜杠ls
就无法解释模糊文件引用。我这里错在哪里了?
答案1
- 如果没有反斜杠:shell 会解释
?
,将其扩展?old
为hold
,因此接收的参数ls
是hold
。 - 使用反斜杠:shell 不会解释
?
,但它会将其解释\?
为文字?
,并将其作为 传递?
。ls
因此接收的参数ls
是?old
。ls
没有看到反斜杠。