2013-06-27 70 views
0

我在AIX上试过mkdir -p /a/b/c。当ab不存在时,此命令创建a,bc。但是,当ab都存在,它给出了一个错误mkdir -p返回错误“文件存在”

无法创建/ A/B。/A/B:文件存在

,并返回一个错误代码2.

任何帮助?

+0

什么任何帮助吗?有什么问题?这是预期的产出。除此之外,这不是Stack Overflow的主题。你应该在[Unix和Linux](http://unix.stackexchange.com)上重新发布它,并在这里删除这个问题。 –

+0

'/ a/b/c'中有一个文件,所以你不能创建一个dir。用'file/a/b/c'检查它。 – fedorqui

+1

你确定'a/b'是一个目录吗?如果是这样,这是非posix-conformant([每个dir操作数,名称现有目录应忽略无误。](http://pubs.opengroup.org/onlinepubs/009695299/utilities/mkdir.html)) – Kevin

回答

0

我认为你是在谈论这样的场景:

bash-2.02# mkdir -p /a/c/d 
bash-2.02# rm -rf /a/c/d 
bash-2.02# mkdir -p /a/c/d 
mkdir: cannot create /a/c 
/a/c: File exists 
bash-2.02# echo $? 
2 
bash-2.02# 
+1

是的,即使“a”和“b”是目录,它说“文件存在”,并且我运行了命令“mkdir -p/a/b/c”,错误仍然是“/ a/b存在”。没有具有相同名称的文件。我认为mkdir -p应该创建路径中的每个目录(如果没有同名的文件) – user785461

+4

@ vik123这是如何回答问题的? – Bill

2

我只是碰到了类似的症状来了 - 除了它是一个破碎的远程挂载点(在这种情况下使用sshfs的),并没有什么关系了文件是 “在路上”:

$ mkdir -p /mnt/sshfs-remote 
mkdir: cannot create directory `/mnt/sshfs-remote': File exists 
$ ls -lscrath /mnt/sshfs-remote 
/bin/ls: cannot access /mnt/sshfs-remote: No such file or directory 
$ ls -lscrath /mnt 
/bin/ls: cannot access /mnt/sshfs-remote: No such file or directory 
total 4.0K 
    ? d????????? ? ? ?  ?   ? sshfs-remote/ 

umount命令*整理出来。我还在触发错误的脚本中添加了一个异常,以尝试卸载。

$ umount -l /mnt/sshfs-remote ; mount /mnt/sshfs-remote 
$ ls -lsahd /mnt/sshfs-remote 
4.0K drwxr-xr-x 1 root root 6 Mar 11 09:20 /mnt/sshfs-remote/ 
$ mkdir -p /mnt/sshfs-remote 
$ echo $? 
0 

*如果有人想知道我在卸除使用-l:这可能是不必要的 - 但在远程坐骑,我发现这是一个更清洁/更简单的方法,只是“让与它一起“。从卸除手册页:

-l, --lazy 
      Lazy unmount. Detach the filesystem from the file hierarchy now, and clean up all references to this filesystem as soon 
      as it is not busy anymore. (Requires kernel 2.4.11 or later.) 
+1

这对我有用,我不得不使用'umount -f“目录的完整路径。这很奇怪,它甚至不会显示执行'ls'时挂载的文件夹。 – codenamezero

0

我过这种情况使用Parallels文件系统。虚拟机抱怨存在一个目录,即使“ls”看不到它。当我进入目录时,它允许它,但是然后ls会失败。所以它似乎是一个文件系统缓存错误。我通过访问主机并使用文件创建目录,然后返回到虚拟机并删除目录来解决此问题。之后,虚拟机文件系统被正确同步,我可以像平常一样使用mkdir创建目录。

在VM:

> mkdir -p build/a/b/c <-- failed with "file exists" 
> cd build    <-- allowed 
> ls     <-- failed 

在主机:

> mkdir build 
> touch build/foo 

在VM:

> rm -rf build 
> mkdir -p build/a/b/c <-- Success