почему нижеприведенное утверждение не запрашивает подтверждения при использовании опции i или I для rm?
// pass aggregated find . -name $name -type d -exec rm -irf {} \; // pass each find . -name $name -type d -exec rm -irf {} +
почему нижеприведенное утверждение не запрашивает подтверждения при использовании опции i или I для rm?
// pass aggregated find . -name $name -type d -exec rm -irf {} \; // pass each find . -name $name -type d -exec rm -irf {} +
Параметр -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, но при этом защищает от большинства ошибок
и что было бы лучшим способом (соответствием) защитить от вредоносного удаления, используя -I или -i и + или ; ?
@ ceph3us Да, пропустите -f. Опция -i обеспечивает большую защиту, чем -I. Если вы используете -i, тоfind ... \;иfind ... +оба одинаково безопасны, а последующие более эффективны в вычислительном отношении.
Ctrl+K или / — быстрый поиск Начните вводить запрос для поиска по сайту
так должно быть только -ir или -Ir :) без форсирования