및 옵션 rm
과 함께 사용 하면 첫 번째 옵션은 무시됩니다. 이것은 POSIX 표준에 문서화되어 있습니다 :-i
-f
-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
)에서 옵션 인수 를 순서대로 처리합니다.
getopt ()가 반복적으로 호출되면 각 옵션 요소에서 각 옵션 문자를 연속적으로 리턴합니다.
이 함수는 일반적으로 모든 옵션이 처리 될 때까지 루프에서 호출됩니다. 이 기능 관점에서 옵션은 순서대로 처리됩니다. 그러나 실제로 발생하는 상황은 응용 프로그램 논리가 충돌하는 옵션을 감지하거나 재정의하거나 오류를 표시하도록 선택할 수 있으므로 응용 프로그램에 따라 다릅니다. 의 경우를 들어 rm
와 i
와 f
옵션, 그들은 완벽하게 덮어 쓰기 서로. 보낸 사람 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
문서 와 일치합니다 .