有很多关于如何做的问题撤消已完成的 rm
命令。就我而言,我的客户经理开始询问:“您确定要删除此文件吗?”
我需要对其中每一项进行确认。而不是手动确认“y/n”:
当被要求输入第 n 个文件的 y/n 时,我可以将其余部分设置为“yes”吗? (相当于 Windows 上的“全部同意”复选框)(
yes | rm
开始之前我就知道窍门)当我被要求输入第 n 个文件的 y/n 时,我可以中止操作吗? (除了关闭机器:))
答案1
要完成请求 1,您需要使用比yes
发送y
N 次然后传递键盘输入更复杂的程序。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