"rm -rf $dir"이 false를 반환합니까?

"rm -rf $dir"이 false를 반환합니까?

디렉토리의 내용을 삭제하기 위해 다음 코드 줄을 작성했습니다.

rm -rf $dir && mkdir -p $dir

그러나 첫 번째 명령문이 실패하면 이는 작동하지 않습니다. 1을 반환할까요?

답변1

물론 일부 부분을 제거하면 권한을 위반하게 됩니다. 예를 들어

$ mkdir -p p/q
$ sudo chown root p p/q
$ sudo chmod 700 p p/q
$ rm -rf p
rm: cannot remove 'p': Permission denied
$ echo $?
1

하지만 참고하세요.할 수 있는귀하의 디렉토리에서 귀하의 것이 아닌 디렉토리를 제거하십시오. 따라서 "콘텐츠" 없이 시도하면 p위의 내용이 실패하지 않습니다.

답변2

네, 삭제 권한이 없으면 실패 $dir합니다 . 삭제할 수 없는 것이 있으면 실패할 것 같아요.rm-r

예를 들어,

$ mkdir test_dir
$ sudo chown root.root test_dir
$ cd test_dir # we no longer have write permission to .
$ sudo mkdir new_dir
$ rm -rf new_dir
rm: cannot remove 'new_dir': Permission denied
$ echo $?
1

관련 정보