Перейти к содержимому

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

1

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

// pass aggregated  find . -name $name -type d -exec rm -irf {} \; // pass each find . -name $name -type d -exec rm -irf {} + 
454 просмотра
ceph3us спросил 8 лет назад
C 113

1 ответ

0
Принятый ответ

Параметр -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 · 8 лет назад · 1

и что было бы лучшим способом (соответствием) защитить от вредоносного удаления, используя -I или -i и + или ; ?

ceph3us · 8 лет назад · 0

@ ceph3us Да, пропустите -f. Опция -i обеспечивает большую защиту, чем -I. Если вы используете -i, тоfind ... \;иfind ... +оба одинаково безопасны, а последующие более эффективны в вычислительном отношении.

John1024 · 8 лет назад · 0
John1024 ответил 8 лет назад
J 12 563