Answers:
根据更新的问题进行编辑:
为了避免被询问删除文件,请添加-f
(“ force”)选项:
rm -f /path/to/file
这有一个副作用,您应该意识到:如果任何给定的路径都不存在,它将不会报告此错误,并且将成功返回:
$ rm -f /nonexistent/path
$ echo $?
0
原始答案:
这是一个简单的解决方案:
yes "$string" | head -n $number | tr $'\n' $'\r'
yes
无限重复您输入的任何字符串,并用换行符分隔。有时会head
停止它$number
,并将tr
换行符转换为回车符。由于回车,您可能看不到任何输出,但是将其传递给此命令(在中bash
)应该可以说明:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
没有的用户bash
可以将结果传递给od
,hexdump
或xxd
查看返回的实际字符。
rm
硬编码要求对写保护的文件“交互地”(提示等待用户输入)。有两种方法可以防止rm
询问:
rm -rf somedir
和
rm -r --interactive=never somedir
(这两种方法也都可以-r
在删除文件而不是目录时使用)
说明:
-f
使rm
“忽略不存在的文件和参数,从不提示”。
--interactive=never
做到了它所说的:永远不要互动。换句话说:永远不要提示。
之间的差别-f
,并--interactive=never
为这部分:“忽略不存在的文件和参数”。
相比:
$ rm -rf nonexistingname
$ echo $?
0
和
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
在编写脚本时,您根本不想rm
交互,但仍然想处理错误,这种区别主要是很有趣的。
摘要:在命令行上使用rm -rf
。在脚本中使用rm -r --interactive=never
。
有关所述问题的答案(“如何避免在删除受保护文件时多次发出“ y”的问题”),请参见https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338860#338860
我也遇到了同样的问题。上面的答案仅适用于一个文件,但是如果您想忽略很多“是”。
您可以使用
sudo rm -r /path/to/directory
删除所有写保护的常规文件