2013-06-27 93 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