为什么通配符在 `sudo rm` 语句中不起作用?
why wildcard doesn't work in `sudo rm` statement?
我试图删除日志目录中的所有文件并在 CentOS 6.5
上使用默认 bash shell
[lei@ids7gueywjZ /]$ sudo ls -al /var/log/jenkins/
total 1541512
drwxr-x--- 2 jenkins jenkins 4096 Jul 22 09:52 .
drwxr-xr-x. 10 root root 4096 Jul 14 21:27 ..
-rw-r--r-- 1 jenkins jenkins 31483 Jul 22 17:07 jenkins.log
-rw-r--r-- 1 jenkins jenkins 1073606656 Jul 18 03:16 jenkins.log-20150718
-rw-r--r-- 1 jenkins jenkins 504815011 Jul 19 03:30 jenkins.log-20150719.gz
[lei@ids7gueywjZ /]$ sudo rm -r /var/log/jenkins/*
rm: cannot remove `/var/log/jenkins/*': No such file or directory
我不明白为什么 rm -r /var/log/jenkins/*
不起作用?是否缺少某些默认 shell 配置?
通配符扩展由 shell 完成,而不是由 rm
完成。
并且 shell 没有 sudo
权限,只有 rm
有。
所以由于shell没有读取/var/log/jenkins
的权限,所以没有扩展,rm
试图删除文件(不是通配符)/var/log/jenkins/*
-- 不存在。
要解决这个问题,您需要一个 shell 和 sudo
权限执行您的 rm
:
sudo sh -c 'rm /var/log/jenkins/*'
目录 /var/log/jenkins
没有 "other" 的权限。即使您 运行 sudo rm -r /var/log/jenkins/*
,shell 扩展也是由您的用户完成的。您应该删除整个目录 (suro rm -r /var/log/jenkinks
),或者以适当的用户身份执行所有操作(我建议 su
-ing 与 jenkins
用户)。
我试图删除日志目录中的所有文件并在 CentOS 6.5
上使用默认 bash shell[lei@ids7gueywjZ /]$ sudo ls -al /var/log/jenkins/
total 1541512
drwxr-x--- 2 jenkins jenkins 4096 Jul 22 09:52 .
drwxr-xr-x. 10 root root 4096 Jul 14 21:27 ..
-rw-r--r-- 1 jenkins jenkins 31483 Jul 22 17:07 jenkins.log
-rw-r--r-- 1 jenkins jenkins 1073606656 Jul 18 03:16 jenkins.log-20150718
-rw-r--r-- 1 jenkins jenkins 504815011 Jul 19 03:30 jenkins.log-20150719.gz
[lei@ids7gueywjZ /]$ sudo rm -r /var/log/jenkins/*
rm: cannot remove `/var/log/jenkins/*': No such file or directory
我不明白为什么 rm -r /var/log/jenkins/*
不起作用?是否缺少某些默认 shell 配置?
通配符扩展由 shell 完成,而不是由 rm
完成。
并且 shell 没有 sudo
权限,只有 rm
有。
所以由于shell没有读取/var/log/jenkins
的权限,所以没有扩展,rm
试图删除文件(不是通配符)/var/log/jenkins/*
-- 不存在。
要解决这个问题,您需要一个 shell 和 sudo
权限执行您的 rm
:
sudo sh -c 'rm /var/log/jenkins/*'
目录 /var/log/jenkins
没有 "other" 的权限。即使您 运行 sudo rm -r /var/log/jenkins/*
,shell 扩展也是由您的用户完成的。您应该删除整个目录 (suro rm -r /var/log/jenkinks
),或者以适当的用户身份执行所有操作(我建议 su
-ing 与 jenkins
用户)。