명령 요약은 다음과 같습니다 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
옵션은 무시됩니다.
이는 경로 이름 피연산자 없이 실행될 수 있어야 하며 종료 시 진단 메시지나 0이 아닌 종료 상태가 rm -f
발생하지 않음을 확인합니다.rm
이 사실은 여러 파일을 삭제하려는 스크립트에서 매우 유용합니다.
rm -f -- "$@"
"$@"
어디에 비어 있거나 존재하지 않는 경로 이름이 포함될 수 있는 경로 이름 목록이 있습니다 .
( rm -f
진단 메시지가 있는 경우 여전히 생성되고 0이 아닌 종료 상태로 종료됩니다.권한 문제지정된 파일이 삭제되는 것을 방지합니다. )
그러나 옵션이나 경로 이름 피연산자 없이 유틸리티를 실행하면 오류가 발생합니다.
$ rm
usage: rm [-dfiPRrv] file ...
$ echo "$?"
1
rm
GNU(위에 표시된 OpenBSD) 및 동일한 유틸리티의 다른 구현에서도 마찬가지이지만 rm
정확한 진단 메시지와 0이 아닌 종료 상태는 다를 수 있습니다(예를 들어 Solaris에서는 2이고 macOS에서는 64입니다).
요약하자면, GNU 매뉴얼은 약간 부정확할 수 있습니다. 일부 옵션( 선택 옵션인 ) rm
의 경우 경로 이름 피연산자는 선택 사항이기 때문입니다 .-f
1 2016년판 이후 결의문 이후이 오류, 바라보다이전 버전참고용.
2 POSIX는 Unix 시스템과 그 동작 방식을 정의하는 표준입니다. 이 표준은 다음으로 구성됩니다.그룹 열기. 질문 "도 참조하세요.POSIX란 정확히 무엇입니까?".
답변2
기술적으로 개요는 정확하지만 혼란스럽습니다. 다음과 같은 경우에는 파일 이름이 필요하지 않습니다.
rm --help
rm --version
(GNU를 사용하는 경우 rm
). 다른 모든 경우에는 파일 이름이 필요합니다.
rm
파일 의 다른 버전은 선택 사항이 아닌 것으로 표시됩니다.예를 들어존재하다OpenBSD 맨페이지.
GNU에 대한 보다 정확한 요약은 rm
다음 세 가지 변형을 보여줍니다.
rm
[옵션...]문서...
rm --help
rm --version