如何在不询问用户是否同意删除文件的情况下删除文件?我正在编写Shell脚本并使用rm函数,但询问“是否删除常规文件?”我真的不需要这个谢谢。

评论

rm -f,是| rm等,但这属于SU。

rm不显示“删除常规文件?”默认提示。您必须将其别名为rm -i或定义为函数。我很惊讶别名在您的脚本中可见。您是执行脚本(./foo.sh)还是采购脚本(.foo.sh或源foo.sh)?

#1 楼

您可能将rm别名为rm -i,所以请尝试以下操作:

评论


或者,使用命令rm ...或\ rm ...跳过别名/功能

–格伦·杰克曼
2011年10月12日20:26

有人认为将rm别名为rm -i是一个坏主意。缺省情况下,rm命令以静默方式删除命名文件。通过将其别名为rm -i,可以养成在按Enter之前不仔细检查的习惯,具体取决于交互式提示来保存您。然后,在没有别名的环境中键入rm some-important-file。

–基思·汤普森(Keith Thompson)
2011-10-12 21:25



@Keith的确是这样,我只将rm别名为rm -v

–小丑
2011年10月12日在21:33



如果“ rm”是一个函数(而不是别名),则此答案应该有效。 bash unset命令可能很有趣

– Xen2050
2015年2月25日14:15在

这不适用于删除100个以上的文件...

– ephephus
20/11/11在19:17

#2 楼

强制标志删除所有提示;

rm -f {file}

评论


这是我在寻找的,而不是被接受的答案。

– gsamaras
15年12月14日在13:12

#3 楼

愿力量与您同在-rm -f

评论


我已经赞成lynks的答案,这是完全一样的。只是为了幽默感

–rain_
17年6月21日在9:59

我赞成评论和答案,因为有人实际上对SO感到幽默。

– Mac
19年4月18日在16:53

#4 楼

yes程序反复对任何提示回答“是”。因此,您也可以将其通过管道传递到交互式rm程序中,以获得所需的效果。

yes | rm <filename>


相反,如果您不想做交互式的事情,可以做

yes n | <something interactive>


,将在输入流上重复“ n”(有效回答问题)

评论


yes n选项对我不起作用。当我使用yes时| rm file.txt,即使该文件受到了正确的保护,它实际上也会删除该文件。

–iammilind
2015年12月8日在6:07



#5 楼

在外壳程序脚本中,您可能要使用rm -f <filename>,但是您还可以通过在外壳程序(或配置文件)中输入-i来消除环境的隐式unalias rm选项。

评论


unalias rm在CentOS中不起作用? Amazon Linux?

–防晒
19-10-21在20:42

#6 楼

如果您具有删除文件所需的权限,并且不想收到提示,请执行以下操作(-f = force):

rm -f file


如果不这样做没有该文件的权限,则需要使用:

sudo rm -f file


评论


“删除常规文件?”提示暗示这不是权限问题。

–基思·汤普森(Keith Thompson)
2011-10-12 21:23

#7 楼

\rm file


反斜杠\绕开别名。

评论


“ \”是反斜杠,您是什么意思?

– Cand3r
16年7月28日在12:32

是的,使用rm而不使用别名会导致不必要的带有\前缀的确认对话框。

– teknopaul
16年8月2日在9:46

#8 楼

除了使用-f参数外,您也可以改用find命令,例如

find -name file.log -delete


#9 楼

当前,我正在一个系统上工作,其中bash shell在一个全局配置文件中将rm命令的定义作为函数接收:

 rm  () { /bin/rm -i ${1+"$@"}; }


因此,没有以上关于别名的答案确实有效。为了消除烦人的行为,我在.bashrc文件中未设置rm函数。
但是,我没有找到任何提到rm被shell函数隐藏的可能性的答案。因此,我在此处添加了答案,希望对遇到相同类型问题的人有所帮助。 of /bin/rm)。

评论


那可能已经解决了您的问题,但无法回答问题。

–嫌疑犯
2015年2月25日在13:57

选定的答案-调用/ bin / rm是否有效?如果我在bash中有一个函数,并且在当前目录中有一个具有相同名称的可执行文件,只需在名称前添加./即可调用该文件,而不是函数。 PS-我在所选答案中添加了有关功能的注释,并且未设置

– Xen2050
2015年2月25日在14:12



是的,/ bin / rm有效。取消设置后,无需键入完整路径。

–daw
2015年2月25日在16:03

#10 楼

如果您的rm别名为rm -i,则请使用unalias rm;

不要直接使用rm -f,除非您确实要删除很多写保护的文件。使用-f肯定有一个很好的理由。

但是,如果您有很多写保护文件,则可能更希望使用rsync -r --delete empty/ removed_dir/以获得更快的速度。

#11 楼

我最喜欢的方法是在bash中使用command命令,就像使用sudo一样。这将在没有别名的情况下运行您的命令,就像通过/bin/rm(可能是rm别名为rm -i)运行它一样。

#12 楼

rm -Rf <folder-to-be-deleted>



-R:递归f:强制,无提示


评论


不就是不行。如果递归命令尚未使用...在某些情况下,这可能会使整个系统崩溃,例如新手尝试使用rm * /。*删除所有隐藏文件(一个示例)

–埃里克·塞巴斯塔(Eric Sebasta)
20-3-20在5:34