rm -irf -Irf с находкой

305
ceph3us

почему нижеприведенное утверждение не запрашивает подтверждения при использовании опции i или I для rm?

// pass aggregated  find . -name $name -type d -exec rm -irf {} \; // pass each find . -name $name -type d -exec rm -irf {} + 
1

1 ответ на вопрос

0
John1024

Параметр -iзапрашивает подтверждение, но -fпараметр, который следует в вашей команде, переопределяет его, отключая диалог подтверждения.

Заметим:

$ rm -fri file1 rm: remove regular empty file 'file1'? n $ rm -irf file1 $  

Если первая форма выше, -fпоявляется первая и -iпоследняя. Следовательно, -iпереопределяет -fи rmпросит подтверждения.

Во второй форме выше, -iпоявляется первый и -fвторой. В этом случае -fпереопределяется и диалог подтверждения не появляется.

Документация

От man rm:

-f, --force
игнорировать несуществующие файлы и аргументы, никогда не запрашивать


подскажу перед каждым удалением


запрашиваю один раз перед удалением более трех файлов или при рекурсивном удалении; менее навязчив, чем -i, но при этом защищает от большинства ошибок

так должно быть только -ir или -Ir :) без форсирования ceph3us 6 лет назад 1
и что было бы лучшим способом (соответствием) защитить от вредоносного удаления, используя -I или -i и + или \; ? ceph3us 6 лет назад 0
@ ceph3us Да, пропустите `-f`. Опция `-i` обеспечивает большую защиту, чем` -I`. Если вы используете `-i`, то` find ... \; `и` find ... + `оба одинаково безопасны, а последующие более эффективны в вычислительном отношении. John1024 6 лет назад 0

Похожие вопросы