![使用强制标志启用 rm 命令的确认](https://linux22.com/image/1519242/%E4%BD%BF%E7%94%A8%E5%BC%BA%E5%88%B6%E6%A0%87%E5%BF%97%E5%90%AF%E7%94%A8%20rm%20%E5%91%BD%E4%BB%A4%E7%9A%84%E7%A1%AE%E8%AE%A4.png)
是否有任何选项可以启用 rm -rf 的确认。我们为 rm=rm -i 设置了一个别名,因此每当我们删除文件时,它都会要求确认,但是当提供 -f 标志时,它不会要求确认。
那么,是否有任何选项可以要求确认带有强制标志的 rm(或 rm -r)命令,该选项适用于 rm -f 和 rm -rf 命令?
在 .bashrc 文件中尝试设置别名
alias 'rm -rf'='rm -rfi'
但它不起作用。通过参考这个网址:我尝试创建一个函数作为
function rm ()
{ if [[ $@ == "-rf" ]];
then command rm -rfi
else command rm "$@"
fi }
但这也不起作用。有人能帮我解决这个问题吗?
答案1
您可以通过删除该-f
选项来修复此问题。
`-i` means interactive.
`-f` means force everything. That includes no confirmation.
引用我自己的系统上的部分内容man rm
(没有 RedHat 企业安装,但足够接近):
-f Attempt to remove the files without prompting for confirmation,
regardless of the file's permissions. If the file does not
exist, do not display a diagnostic message or modify the exit
status to reflect an error. The -f option overrides any previous
-i options.
最后一行回答了你的问题。
答案2
你问了同样的问题并得到了答案这里。开箱后无法使用!您需要某种包装。
答案3
修复了使用 –f 标志的 rm 命令询问确认的问题。测试了各种删除情况并且正常运行。
您可以在.bashrc文件中添加以下脚本。
rm() {
if [[ $* == -rf* ]]; then
shift 1;
command rm -rfi "$@" | more
elif [[ ${@: -1} == -rf* ]]; then
command rm "$@" -rfi | more
else
command rm -i "$@"
fi
}
请确保没有设置 rm 的别名,否则在执行源 .bashrc 时会出现错误。
当我们在第一个和最后一个都给出 –rf 时,它会起作用,如下所示,并且它也适用于文件(因此不需要别名 rm=rm-i)
[root@localhost ~]# mkdir test
[root@localhost ~]# rm -rf test
rm: remove directory ‘test’?
[root@localhost ~]# rm test -rf
rm: remove directory ‘test’?
[root@localhost ~]#