Her rm
ikisi de -i
ve -f
seçenekleri ile kullanırken , ilk göz ardı edilir. Bu POSIX standardında belgelenmiştir :
-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.
ve ayrıca GNU info
sayfasında:
‘-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.
Kaputun altında ne olduğunu görelim:
rm
seçeneği ile getopt(3)
özellikle işler getopt_long
. Bu işlev, komut satırındaki seçenek değişkenlerini **argv
görünüm sırasına göre işler :
Getopt () art arda çağrılırsa, seçenek öğelerinin her birinden art arda seçenek karakterlerinin her birini döndürür.
Bu fonksiyon tipik olarak tüm seçenekler işlenene kadar bir döngüde çağrılır. Bu fonksiyonlar açısından seçenekler sırayla işlenir. Bununla birlikte, gerçekte olan şey, uygulama mantığı çakışan seçenekleri algılamayı, bunları geçersiz kılmayı veya bir hata sunmayı seçebildiğinden uygulamaya bağlıdır. Durumunda için rm
ve i
ve f
seçenekleri, onlar mükemmel yazma birbirinden. Kimden 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;
Her iki seçenek de aynı değişkenleri ayarlar ve bu değişkenlerin durumu komut satırında en son seçenek hangisi olursa olur. Bunun etkisi POSIX standardı ve rm
dokümantasyonu ile aynı çizgidedir .