“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

相关内容