如何取消 rm 命令?

如何取消 rm 命令?

有很多关于如何做的问题撤消已完成的 rm命令。就我而言,我的客户经理开始询问:“您确定要删除此文件吗?”

我需要对其中每一项进行确认。而不是手动确认“y/n”:

  1. 当被要求输入第 n 个文件的 y/n 时,我可以将其余部分设置为“yes”吗? (相当于 Windows 上的“全部同意”复选框)(yes | rm开始之前我就知道窍门)

  2. 当我被要求输入第 n 个文件的 y/n 时,我可以中止操作吗? (除了关闭机器:))

答案1

要完成请求 1,您需要使用比yes发送yN 次然后传递键盘输入更复杂的程序。rm除了总是询问 ( rm -i) 或从不询问 ( ) 之外,您无法做到这一点rm -f

您始终可以rm通过以下方式中止

  • 按 Control-C 中断它(发送 SIGINT),
  • 按 Control-Z 停止它(发送 SIGSTOP),然后杀死它,
  • 发送 SIGTERM ( kill),或
  • 向其发送 SIGKILL ( kill -9)。

这不会撤消rm已执行的任何文件操作,但会阻止其执行任何进一步的文件操作。如果rm进程当前提示用户输入,则它不会主动取消任何文件的链接,因此终止它只会阻止其继续。

答案2

GNU rm 支持-i,我认为这就是您所指的并要求对每个文件进行确认,但也支持-I,这有点不同:

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

至于是否可以在开始后停止与 rm 的交互,点击Ctrl-C应该可以。

答案3

使用Ctrl+c您将能够取消操作。

但是,如果您查看文件.bashrc,您可以注释强制确认的别名,它使用-i参数作为解释的 dhag。

在你里面.bashrc你会发现这样的条目:

alias rm='rm -i'

如果你评论它,你的rm -f意志就会直接起作用

答案4

在 下,您可以通过在命令前面bash添加 a 来绕过别名,因此\

rm filename

变成

\rm filename

相关内容