[英]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/*
。
要解決這個問題,你需要一個具有sudo
權限的shell來執行你的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
( suro rm -r /var/log/jenkinks
),或者以適當的用戶身份執行所有操作(我建議使用jenkins
用戶進行su
-ing)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.