假设我们使用标准的bash术语来编写一个for循环,它循环srm来安全地擦除驱动器上的项目。
现在假设我们将其设置为迭代10次,在完成第一次迭代后,它如何仍然对文件起作用?该文件应该不再存在,那么它如何擦除它呢?这不是一个特定于srm的问题,任何东西都可以运行。即使是像mv这样的东西,即使文件不再可用。
发布于 2010-02-02 09:20:51
它将在循环中运行10次,但除了第一次迭代外,您正在执行的命令将失败(并返回-1)。该命令还将写出它通常写出的任何错误消息(写入stdout、stderr或文件)。
#!/bin/bash
for i in {1..5}
do
rm something
done现在,假设有一个名为something的文件,您将获得:
rm: something: No such file or directory
rm: something: No such file or directory
rm: something: No such file or directory
rm: something: No such file or directory请注意,自从第一次rm成功运行以来,这种情况发生了4次,而不是5次。
发布于 2010-02-02 09:47:27
你不能。一旦srm返回,文件就消失了。
您不需要编写循环,而是需要调整srm的参数,以便在返回之前多次覆盖数据。
根据Wikipedia writeup on srm,默认模式为35 pass Gutmann。这是否真的不够呢?
发布于 2010-02-02 09:19:13
srm会为您执行循环,然后删除驱动器,因此不需要也不能从bash执行您想要的操作。您必须用C/C++编写一些内容,使用某些特定于操作系统的API直接与文件系统对话。
https://stackoverflow.com/questions/2181307
复制相似问题