bash 没有确定性地处理星号通配符

cur*_*ios 3 bash wildcards

我不小心在没有主目录的情况下向我的系统添加了一个用户(我忘记在 useradd 中放置 -d 和 -m 标志)。我没有删除用户并重新开始,而是尝试简单地 mkdir 主目录并自己从 /etc/skel 复制文件。但是,我收到以下奇怪的错误:

user@host:~$ sudo cp -rv /etc/skel/* /home/newuser/
cp: cannot stat `/etc/skel/*': No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是,以下两个命令按预期工作:

user@host:~$ sudo cp -rv /etc/skel/.bashrc /home/newuser/
user@host:~$ cp -rv ~/testfolder1/* /testfolder2/
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么我收到初始错误。

gle*_*man 5

当 glob 表达式 ( /etc/skel/*) 扩展为文件时,默认情况下该表达式作为纯字符串保留在命令中。在这种情况下,它扩展为没有文件,因为 /etc/skel 中的所有文件都是点文件。因此,您试图复制 /etc/skel 中的文字文件“*”,但该文件不存在。

http://www.gnu.org/software/bash/manual/bashref.html#Filename-Expansion