rm 명령의 -i 옵션이 대화형 모드이고, -f 옵션이 강제 모드인 것을 알게 되었습니다.
이 두 가지 옵션을 시도하면
rm -if test.txt
그것은 나에게 묻지 않고 단지 제거했습니다. 이는 -f 옵션이 -i 옵션보다 우선한다는 것을 의미합니다.
물론 실생활에서는 -i와 -f 옵션을 동시에 사용하지 않을 것입니다. 하지만 두 개의 상충되는 옵션을 동시에 사용하는 경우 우선순위가 있는지 알고 싶습니다.
우분투 22.04에서 이것을 시도했습니다.
답변1
일반적으로 아니요, Unix 명령에는 플래그 우선 순위 개념이 없습니다.
~에서유틸리티 매개변수에 대한 그룹 기본 사양 섹션을 엽니다.
유틸리티 설명에서 달리 지정하지 않는 한, 상호 배타적인 매개변수 충돌을 사용하면 정의되지 않은 결과가 생성됩니다.
우선순위가 무엇인지는 명령에 의해 암시적으로 결정되며, 충돌하는 플래그가 제공되면 경고나 오류가 발생할 수 있습니다.
rm
앞서 언급했듯이 의 경우 -f
이전 항목을 덮어쓰게 됩니다 -i
.
또 다른 예를 들어, 아카이브를 tar
생성, 보관 및 추출 하도록 요청하면 말이 안 된다고 불평할 것입니다.-c
-x
$ tar cxf test
tar: You may not specify more than one '-Acdtrux', '--delete' or '--test-label' option
답변2
@ckhan의 답변 외에도 rm
제가 사용하는 구현에서는 항상 마지막으로 주어진 매개변수를 최종 매개변수로 처리합니다. 이는 다음을 의미합니다.
rm -fi
# 대화형으로 작동합니다
rm -if
# 비대화형으로 작동합니다
rm -ffifi
# 대화형으로 작동합니다
등. 예를 들어, AIX 맨페이지(AIX 7.2)에는 다음과 같이 명시되어 있습니다.
-f 및 -i 플래그가 모두 지정되면 지정된 마지막 플래그가 적용됩니다.