为什么通配符在`sudo rm`语句中不起作用? [英] why wildcard doesn't work in `sudo rm` statement?

查看:20
本文介绍了为什么通配符在`sudo rm`语句中不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试删除日志目录中的所有文件,并使用CentOS 6.5上的默认bash外壳

[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/*不起作用?是否缺少某些默认外壳配置?

推荐答案

通配符扩展由外壳程序完成,而不是rm

并且外壳程序没有sudo权限,只有rm权限。

因此,由于外壳程序没有读取/var/log/jenkins的权限,因此没有展开,并且rm尝试删除不存在的文件(不是通配符)/var/log/jenkins/*

若要解决此问题,您需要具有sudo执行rm权限的外壳

sudo sh -c 'rm /var/log/jenkins/*'

这篇关于为什么通配符在`sudo rm`语句中不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆