我有一个名为cam的用户。Cam存储了一堆文件。现在我想移动那些文件,所以我尝试了以下操作...
sudo mv /home/cam/DCS-*.jpg /home/cam/cam/
但是当我运行此命令时,我得到...
mv: cannot stat ‘/home/cam/DCS-*.jpg’: No such file or directory
但是如果我像这样...
sudo mv /home/cam/DCS-934L2015110711425501.jpg /home/cam/cam/
它工作正常。我想念WTF
如果我这样做,
sudo ls /home/cam
我会看到一切,但没有sudo
我没有权限去看任何东西。
执行此命令时:
sudo mv /home/cam/DCS-*.jpg /home/cam/cam/
的*
是由shell根据当前用户的权限扩大。由于当前用户看不到这些文件(ls /home/cam
没有权限),因此外壳程序无法扩展参数列表。
sudo不应该拥有权限吗?
否。使用sudo
,mv
命令将以root用户身份执行,但参数列表扩展会在执行传递给之前发生sudo mv
。
要在*
具有root权限的情况下进行扩展(以便目录的内容可见),可以将命令包装在其自己的shell中,如下所示:
sudo sh -c 'mv /home/cam/DCS-*.jpg /home/cam/cam/'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句