如何取消 rm 命令?

And*_*ejs 10 rm

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

我需要为他们中的每一个进行确认。而不是手动确认“是/否”:

  1. 当被要求为第 n 个文件输入 y/n 时,我可以将余数设置为“是”吗?(相当于 Windows 上的“Yes to All”复选框)(我yes | rm在开始之前就知道诀窍)

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

cas*_*sey 19

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

您可以随时中止rm通过

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

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

  • ...虽然我看不出它有什么用处。如果你知道哪些文件你想要分离/未取消链接,为什么不将正确的参数传递给 `rm` 而不是构建扭曲的、不可靠的命令? (4认同)
  • @JeffSchaller 这将在没有输入的情况下到达第 9 个 y/n,但您将无法回答 y/n 到第 10 个。 (2认同)

dha*_*hag 10

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
Run Code Online (Sandbox Code Playgroud)

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