簡體   English   中英

為什么通配符在`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/*

要解決這個問題,你需要一個具有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/jenkinkssuro rm -r /var/log/jenkinks ),或者以適當的用戶身份執行所有操作(我建議使用jenkins用戶進行su -ing)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM