"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

関連情報