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

Ram*_*amy 0 ubuntu ubuntu-10.04

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

[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
Run Code Online (Sandbox Code Playgroud)

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

HBr*_*ijn 5

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

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

规避将是:

sudo sh -c 'ls /var/log/apache2/*.log' 
Run Code Online (Sandbox Code Playgroud)