有人可以向我解释一下吗?
[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'