2010-02-02 167 views
0

可以說,我們使用標準的bash術語來寫一個for循環,其循環SRM到您的驅動器上的安全擦除一個項目。對於bash腳本循環

現在讓我們說,我們將它設置爲重複10次,它完成一次迭代後,怎麼能仍對文件進行操作?該文件不應該存在,那麼它如何擦除它?不是特定於srm的問題,任何事情都可以運行。甚至當文件不再可用時,甚至像mv一樣。

+0

你可以把它更清楚,你想做什麼?你說你想在for循環中運行mv(例子)。那麼您想要再次對移動的文件進行操作? – ghostdog74 2010-02-02 01:23:21

回答

3

它會通過循環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 

注意,這種情況發生的4倍,而不是5,因爲是第一次,rm運行成功。

2

SRM完成循環給你,然後刪除驅動器,也沒有必要,或者你從慶典想要的東西的能力。你將不得不用C/C++編寫一些使用某些操作系統特定的API直接與文件系統交談的東西。

2

矯枉過正。只需使用shred --remove <file>;這是十幾倍更容易。

如果你想擦拭你的整個驅動器,已經非常系統地證明沒有什麼東西可以讓你的驅動器比dd更有效,並且可以用零寫驅動器。

3

你不能。一旦srm返回,該文件就消失了。

而是然後寫一個循環,你會想的參數調整到SRM返回前,多次覆蓋數據。

按照Wikipedia writeup on srm,默認模式爲35 pass Gutmann。這真的不夠嗎?