rm manual에서는 이것이 사실이 아닌데 아무런 논쟁 없이 실행할 수 있다고 말하는 이유는 무엇입니까?

rm manual에서는 이것이 사실이 아닌데 아무런 논쟁 없이 실행할 수 있다고 말하는 이유는 무엇입니까?

rm명령 의 개요는 다음과 같습니다 .

rm [OPTION]... [FILE]...

rm아무런 옵션이나 인수 없이 명령 만 사용할 수 있다는 뜻이 아닙니까 ? 자체적으로
명령을 실행하면 터미널에 다음 오류가 표시됩니다.rm

rm: missing operand
Try 'rm --help' for more information.

왜 이런 일이 일어나는지 말해 줄 수 있는 사람이 있나요?

답변1

유틸리티 의 표준 개요 rm가 지정됩니다.POSIX 표준에서1&2

rm [-iRr] file...
rm -f [-iRr] [file...]

첫 번째 형식에서는 최소한 하나의 파일 피연산자가 필요하지만 두 번째 형식에서는 그렇지 않습니다.

파일 피연산자 없이 수행하는 것은 rm -f오류가 아닙니다.

$ rm -f
$ echo "$?"
0

...하지만 그다지 많은 일을 하지는 않습니다.

표준에 따르면 옵션의 경우 -f유틸리티 rm는...

확인 메시지를 표시하지 않습니다. 파일 피연산자가 없거나 피연산자가 존재하지 않는 경우 진단 메시지를 작성하거나 종료 상태를 수정하지 마십시오. 이전에 발생한 -i옵션은 모두 무시됩니다.

rm -f이는 경로 이름 피연산자 없이 실행이 가능해야 하며 이것이 rm진단 메시지나 0이 아닌 종료 상태로 종료되는 것이 아님을 확인합니다.

이 사실은 다음과 같이 여러 파일을 삭제하려고 시도하는 스크립트에서 매우 유용합니다.

rm -f -- "$@"

"$@"비어 있거나 비어 있지 않을 수 있거나 존재하지 않는 경로 이름을 포함할 수 있는 경로 이름 목록은 어디에 있습니까?

( rm -f진단 메시지가 계속 생성되고 0이 아닌 종료 상태로 종료됩니다.권한 문제명명된 파일이 제거되는 것을 방지합니다.)

옵션이나 경로 이름 피연산자 없이 유틸리티를 실행하면 오류가 발생합니다.

$ rm
usage: rm [-dfiPRrv] file ...
$ echo "$?"
1

rmGNU (위에서는 OpenBSD 표시 ) 및 동일한 유틸리티의 다른 구현에서도 마찬가지이지만 rm정확한 진단 메시지와 0이 아닌 종료 상태는 다를 수 있습니다(Solaris에서는 값이 2이고 macOS에서는 64입니다. 예를 들어).

결론적으로 GNU 매뉴얼은 일부 옵션( 선택적 옵션인 )의 경우 경로 이름 피연산자가 선택 사항이라는 rm것이 사실이므로 약간 부정확할 수 있습니다 .-f


2016년 판 이후 1개 , 해결 후이 버그, 보다이전 버전참고용.
2 POSIX는 Unix 시스템이 무엇인지, 어떻게 작동하는지 정의하는 표준입니다. 이 표준은 다음에 의해 게시됩니다.오픈 그룹. "라는 질문도 참조하십시오.POSIX란 정확히 무엇입니까?".

답변2

기술적으로 개요는 정확하지만 혼란스럽습니다. 파일 이름이 필요하지 않은 경우가 있습니다.

rm --help
rm --version

(GNU를 사용할 때 rm). 다른 모든 경우에는 파일 이름이 필요합니다.

다른 버전에서는 rm파일을 선택 사항이 아닌 것으로 표시합니다.예를 들어~에OpenBSD 맨페이지.

GNU에 대한 보다 정확한 개요는 rm세 가지 변형을 보여줍니다.

rm[옵션...]파일...
rm --help
rm --version

관련 정보