使用强制标志启用 rm 命令的确认

使用强制标志启用 rm 命令的确认

是否有任何选项可以启用 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 ~]#

相关内容