rm
दोनों -i
और -f
विकल्पों के साथ उपयोग करते समय, पहले वाले को अनदेखा किया जाएगा। यह POSIX मानक में प्रलेखित है :
-f
Do not prompt for confirmation. Do not write diagnostic messages or modify
the exit status in the case of nonexistent operands. Any previous
occurrences of the -i option shall be ignored.
-i
Prompt for confirmation as described previously. Any previous occurrences
of the -f option shall be ignored.
और GNU info
पेज में भी :
‘-f’
‘--force’
Ignore nonexistent files and missing operands, and never prompt the user.
Ignore any previous --interactive (-i) option.
‘-i’
Prompt whether to remove each file. If the response is not affirmative, the
file is skipped. Ignore any previous --force (-f) option.
देखते हैं कि हुड के नीचे क्या होता है:
rm
getopt(3)
विशेष रूप से इसके विकल्प को संसाधित करता है getopt_long
। यह फ़ंक्शन कमांड लाइन में विकल्प तर्क को संसाधित करेगा ( **argv
) उपस्थिति के क्रम में:
यदि गेटॉप () को बार-बार कहा जाता है, तो यह प्रत्येक विकल्प तत्वों में से प्रत्येक विकल्प अक्षर के क्रमिक रूप से लौटता है।
इस फ़ंक्शन को आम तौर पर एक लूप में कहा जाता है जब तक कि सभी विकल्पों को संसाधित नहीं किया जाता है। इस फ़ंक्शन के दृष्टिकोण से, विकल्पों को क्रम में संसाधित किया जाता है। हालांकि, वास्तव में क्या होता है, यह अनुप्रयोग पर निर्भर है, क्योंकि आवेदन तर्क परस्पर विरोधी विकल्पों का पता लगाने के लिए चुन सकता है, उन्हें ओवरराइड कर सकता है, या एक त्रुटि प्रस्तुत कर सकता है। के मामले के लिए rm
और i
और f
विकल्प, वे पूरी तरह से अधिलेखित eachother। से rm.c
:
234 case 'f':
235 x.interactive = RMI_NEVER;
236 x.ignore_missing_files = true;
237 prompt_once = false;
238 break;
239
240 case 'i':
241 x.interactive = RMI_ALWAYS;
242 x.ignore_missing_files = false;
243 prompt_once = false;
244 break;
दोनों विकल्प समान चर निर्धारित करते हैं, और इन चरों की स्थिति कमांड लाइन में अंतिम विकल्प होगा। इसका प्रभाव POSIX मानक और rm
प्रलेखन के साथ इनलाइन है ।