编写“rm”和“rm -i”脚本

编写“rm”和“rm -i”脚本

我想创建一个脚本,只要删除三个以上的文件,它就会默认调用rm -i。我知道它会进入初始化文件,但似乎无法让它工作。

迄今为止:

if [$file -ge 3]; then
  rm -i 
  exit 0 
else
  rm
exit 1

答案1

@Tim 的答案中给出的函数适用于任何运行 bash 的系统。然而,GNUrm已经提供了满足您需要的选项(来自man rm):

   -I     prompt  once  before  removing more than three
          files, or  when  removing  recursively.   Less
          intrusive  than -i, while still giving protec‐
          tion against most mistakes

因此,如果您有 GNU rm(如果您运行的是 Linux,则应该有 GNU),您只需将此行添加到您的/.bashrc

alias rm='rm -I'

删除超过3个文件时会提示,但不会对每个文件都要求确认,如果确认操作,所有文件将被删除。

答案2

这对我有用,请将这些行添加到您的~/.bashrc

rm() {
   if [ "$#" -ge 3 ]; then
        command rm -i "$@"
   else
        command rm "$@"
   fi
}

这将创建一个rm函数,该函数将被调用,而不是/bin/rm每次执行时都被调用rm

"$#"扩展到传递的参数数量。

答案3

这是一种简洁但仍可移植的方法:

rm() {
  command rm $([ ${#} -gt 3 ] && echo \-i) "$@"
}

不过我建议避免改变rm语义,请参阅此回复了解详情。

相关内容