macos中目录重命名的意外行为(其他posix风格?)

问题描述 投票:0回答:1

[基本上,在Python或bash中,我可以将目录重命名为该目录中的其他名称:此时,仍然从目录中显示旧名称,但实际上已经进行了重命名。

在具有APFS的macOS上,这是由于我编写的Python脚本按照我使用的特定命名约定重命名目录而引起的,我注意到了这种现象。

我将其发布为posix / shell / macos,因为我一半希望在Linux下也能做到这一点,并且我从zshell中得到了相同的常规行为。

假设我有一个目录,foo

(venv) jluc@test$ tree
.
└── foo

我将其重命名为带有mv foo bar的小节

(venv) jluc@test$ tree
.
└── bar

但是现在,让我们进入该目录并在其中执行重命名。

$cd bar
$pwd
/Users/jluc/kds2/wk/explore/test/bar
$ mv ../bar ../zoom
$ pwd
/Users/jluc/kds2/wk/explore/test/bar  👈 still the old name

因此,现在,在bar中,我将其重命名为zoom。它没有出错。在本地,pwd显示我仍然在同一目录中。我可以执行ls,但我不在无效的目录中,某些命令有时会将其放入。

但是,向上一层的树讲述了一个不同的故事。

(venv) jluc@bar$ tree ..
..
└── zoom  👈 but here I see the new name

和cd到当前目录失败

cd `pwd`
-bash: cd: /Users/jluc/kds2/wk/explore/test/bar: No such file or directory

以薛定inger的inger的名义发生了什么?文件系统APFS底层的inode方案是否提供此功能?不同的文件系统(例如ext4)是否也会表现出相同的行为?

macos shell filesystems posix apfs
1个回答
0
投票

有两件事在玩:

© www.soinside.com 2019 - 2024. All rights reserved.