这是我尝试过的:

这是我尝试过的:

我在 Oracle Linux 中有一个奇怪的目录,无法删除、无法更改所有者、无法更改组等。

它似乎是一个空的环境变量,名为:.$EXTEND

这是我尝试过的:

[root@PSFSTSTAPP01 interfaces]# ls -al
total 74
drwxrwxrwx  3 psoft psoft 3 May 11 12:42 .
drwxrwxrwx  4 psoft psoft 4 May 11 12:42 ..
drwx------+ 2 root  sys   3 Oct 23  2015 .$EXTEND
[root@PSFSTSTAPP01 interfaces]#

[root@PSFSTSTAPP01 interfaces]# chown root:root .$EXTEND
chown: changing ownership of `.': Operation not permitted
[root@PSFSTSTAPP01 interfaces]#

[root@PSFSTSTAPP01 interfaces]# echo $EXTEND

[root@PSFSTSTAPP01 interfaces]#

[root@PSFSTSTAPP01 interfaces]# echo .$EXTEND
.
[root@PSFSTSTAPP01 interfaces]#
[root@PSFSTSTAPP01 interfaces]# chmod 777 .$EXTEND
chmod: changing permissions of `.': Operation not permitted
[root@PSFSTSTAPP01 interfaces]#

[root@PSFSTSTAPP01 interfaces]# chattr -i .$EXTEND
chattr: Inappropriate ioctl for device while reading flags on .
[root@PSFSTSTAPP01 interfaces]#

[root@PSFSTSTAPP01 interfaces]# rm -r .$EXTEND
rm: cannot remove directory: `.'
[root@PSFSTSTAPP01 interfaces]# rmdir .$EXTEND
rmdir: failed to remove `.': Invalid argument
[root@PSFSTSTAPP01 interfaces]#

答案1

您可以转义$符号:rm -r .\$EXTEND

使用单引号:rm -r '.$EXTEND'

答案2

为了区分变量和字符串,bash 使用$.

当你这样做时:

rm -R .$EXTEND 

变量 $EXTEND 被扩展并替换结果。

为了删除.$EXTEND文件,你需要告诉 bash 解释$它没有特殊含义。您可以通过两种方式进行:

rm -R .\$EXTEND #\ strips the special meaning of $

或者

rm -R '.$EXTEND'
# Use single quotes. Variable expansion/substitution doesn't happen inside
# single quotes

答案3

我发现启用 SMB 时,会在 Oracle ZFS 存储系统上创建 .$EXTEND 目录。可以为池禁用 SMB,但仍无法删除 .$EXTEND 目录。

相关内容