Для цикла в Bash Script - PullRequest
       2

Для цикла в Bash Script

0 голосов
/ 02 февраля 2010

Допустим, мы должны были использовать стандартную терминологию bash для написания цикла for, который зацикливает srm для безопасного удаления элемента на вашем диске.

Теперь допустим, что мы настроили его на итерацию 10 раз, после того, как будет выполнена первая итерация. Как он все еще может работать с файлом? Файл больше не должен существовать, так как он может стереть его? Не вопрос, специфичный для srm, все может быть запущено. Даже что-то вроде mv, даже когда файл больше недоступен.

Ответы [ 4 ]

3 голосов
/ 02 февраля 2010

Вы не можете. Как только srm вернется, файл исчезнет.

Вместо того, чтобы писать цикл, вам нужно настроить аргументы на srm, чтобы перезаписывать данные больше раз перед возвратом.

Согласно записи Википедии на srm , режим по умолчанию - 35 pass Gutmann . Разве этого не достаточно?

3 голосов
/ 02 февраля 2010

Он будет проходить через цикл 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 голосов
/ 02 февраля 2010

Overkill.Просто используйте shred --remove <file>;это в дюжину раз проще.

Если вы пытаетесь стереть весь диск, систематически доказано, что ничто не дает вам больше отдачи, чем dd и запись вашего диска с нулями.

2 голосов
/ 02 февраля 2010

srm делает цикл за вас, а затем удаляет диск, нет необходимости или возможности делать то, что вы хотите от bash. Вам придется написать что-то на C / C ++, которое будет напрямую взаимодействовать с файловой системой, используя какой-то специфический для ОС API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...