一个奇怪的 Linux 文件问题

2023-12-01 12:35:14 +08:00
 leo747604

Ubuntu 目录里突然出现目录 "." 和 "..":

(base) leo@ICELAND:~/some_dir$ ls -l -a
total 1164
drwxrwxr-x 3 leo leo   4096 Dec  1 07:08 .
drwxrwxr-x 4 leo leo   4096 Dec  1 11:52 ..
drwxrwxr-x 8 leo leo   4096 Dec  1 12:19 .git

上传到 Git Server 就无法 clone / pull, 也没法 revert 有问题的那次 commit:

error: invalid path './.git/xxx'
error: invalid path './monitor.py'
fatal: revert failed

这两个目录还没法删除:

rm: refusing to remove '.' or '..' directory: skipping '.'

尝试用 inode 删除, 但还是一样的结果:

find . -inum 830800 -exec rm -rf -i {} \;

我尝试进入这个目录:

cd: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

正常情况下 "." 应该是当前目录, ".." 应该是上级目录, 而且以前用

ls -l -a

也从来没出现过这两个隐藏目录 各位有碰到这样的情况吗

979 次点击
所在节点    Ubuntu
15 条回复
puttsync0f
2023-12-01 12:41:15 +08:00
不会玩 Linux 建议不要玩!!!
连 . 和 .. 都搞不懂用什么 Linux ?
还想把它们删掉,你是要笑死我吗?
zebedy
2023-12-01 12:45:01 +08:00
你可要笑死我了,.表示当前目录,..表示上层目录,不信你 cd ..看看能为你到哪儿
今日看到的最好笑的事情
leo747604
2023-12-01 12:48:44 +08:00
@zebedy @puttsync0f 可能是我没描述清楚,是除了正常应该有的 . 和 .. 之外还有 . 和 .. ,这两个是不应该存在的,删也删不掉
leo747604
2023-12-01 12:49:28 +08:00
@zebedy
@puttsync0f
不是原有的 . 和 ..
puttsync0f
2023-12-01 12:53:39 +08:00
@leo747604 Linux 一切皆文件,什么时候允许重名了?我都懒得回复你
AoEiuV020JP
2023-12-01 13:02:36 +08:00
不知道你在折腾什么,linux 对所有程序而言,点都是当前目录,点点都是上级目录,压根没有程序能创建这两个名字的文件和文件夹,也无法展示,,
ls -l -a 本来就是会列出点和点点的,
dnfQzjPBXtWmML
2023-12-01 13:12:04 +08:00
加了-a 就会出现这两个
leo747604
2023-12-01 13:18:03 +08:00
@AoEiuV020JP 我知道啊,理论上来说却是创建不了这种文件名的文件。我也没见过这种情况,不过我刚才好像看错了,多余的.是个文件
drwxrwxr-x 3 leo leo 4096 Dec 1 07:08 .
drwxrwxr-x 4 leo leo 4096 Dec 1 11:52 ..
-rw-r--r-- 8 gga gga 3872 Dec 1 11:10 .
drwxrwxr-x 4 leo leo 4096 Dec 1 11:52 .git
leo747604
2023-12-01 13:19:52 +08:00
@leo747604
@dnfQzjPBXtWmML
刚才看了下另一个目录下,是这样显示
oamzn
2023-12-01 13:25:01 +08:00
突然发现一个很奇怪的问题,赶紧上 V 站发个贴讨论下(这帖子质量肯定高)
然后。。。就没有然后了;
不错很好的摸鱼帖子
leo747604
2023-12-01 14:01:36 +08:00
@oamzn
@dnfQzjPBXtWmML
@AoEiuV020JP
@puttsync0f
@zebedy

抱歉占用各位时间了, 找到原因了, 是 GitPython 这个包使用不当导致其创建了一个 '. '和 '.. ' 由于一开始是在 VS Code 远程连接看的, 文件列表里并没有像 ls 那样显示 '. ', 而只是一个点, 而传到 Git Server (Gogs) 之后它并不能正确处理这个点导致接下来的一系列问题
AoEiuV020JP
2023-12-01 14:05:47 +08:00
总之就是文件全名是点后面带空格?这种我也有用,可 ls 出来也不是主贴显示的样子,
leo747604
2023-12-01 14:09:03 +08:00
@AoEiuV020JP 我现在也不能确定到底是怎么回事,Gogs 上还是把它识别成了目录
[https://img.xwyue.com/i/2023/12/01/6569786b511d4.jpeg]( https://img.xwyue.com/i/2023/12/01/6569786b511d4.jpeg)
leo747604
2023-12-01 14:11:12 +08:00
@AoEiuV020JP 现在是 GitPython 操作过两个目录,其中一个有问题的目录删掉了,另一个目录下 .后面带空格,另一个什么问题暂时不确定
mephisto
2023-12-01 16:51:10 +08:00
@leo747604 有可能他只是看其来像点,实际是另外一个 unicode 字符,骗过了人眼,以前很多人这样弄欺诈域名的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/996807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX