ls 显示“没有这样的文件或目录”

ls 显示“没有这样的文件或目录”

有人可以向我解释一下吗?

[rabdelaz@Linux_Desktop:/etc/apache2]$sudo ls /var/log/apache2/*.log
ls: cannot access /var/log/apache2/*.log: No such file or directory

[rabdelaz@Linux_Desktop:/etc/apache2]$sudo ls /var/log/apache2/
access.log  error.log.1      error.log.11.gz  error.log.13.gz  error.log.2.gz  error.log.4.gz  error.log.6.gz  error.log.8.gz  other_vhosts_access.log
error.log   error.log.10.gz  error.log.12.gz  error.log.14.gz  error.log.3.gz  error.log.5.gz  error.log.7.gz  error.log.9.gz  ssl_access.log

显然有这样的文件或目录。我很困惑。Ubuntu 也困惑吗?

答案1

* 您的 shell 将在提升命令权限之前尝试扩展通配符ls
由于作为普通用户,您没有足够的权限读取,/var/log/apache2因此扩展将失败。

然后,*.log将传递给sudo,但由于sudo不执行通配符(这是一个 shell 函数),因此ls将再次失败,因为没有名为的文件*.log

规避方法如下:

sudo sh -c 'ls /var/log/apache2/*.log' 

相关内容