Di Ubuntu mengapa saya tidak dapat memiliki folder bernama "MyFile" dan dokumen bernama "MyFile" di lokasi yang sama? Saya mendapatkan item already used in this location
kesalahan. Apakah Ubuntu / Linux memperlakukan folder dan file sebagai objek yang sama (pointer ke disk)?
15
.myfile
,?blog
dengan posting blog di dalamnya, dan halaman html disebutblog
dengan daftar posting blog.Jawaban:
Di Linux, hampir semuanya adalah deskriptor file. Direktori adalah jenis file khusus yang dari perspektif pengguna dapat menampung file lain.
Jadi Anda tidak dapat memiliki keduanya dengan nama yang sama, di direktori yang sama pada saat yang sama.
Jika Anda bisa, hidup akan menjadi sengsara bagi pembuat kode. Apa yang akan Anda dapatkan dari perintah "isDir" kembali ketika seseorang ingin membuat direktori dan memeriksa apakah ada. Haruskah isDir ("/ home / shrodingers / cat") mengembalikan true, false atau keduanya? Dan apa yang Anda harapkan jika seseorang ingin membuka dir file dalam beberapa kode?
Dan apa yang harus dilakukan sistem ketika Anda menyuruhnya membuka sesuatu? Asumsikan Anda menginginkan file tersebut? Itu berarti masalah ;)
By the way: ini berlaku untuk SEMUA sistem operasi, bukan hanya Linux. Meskipun dari sudut pandang Desktop sistem operasi dapat menambahkan pengidentifikasi unik ke file atau direktori dan menghapusnya dari daftar. Dari sudut pandang command line, itu akan bermasalah.
Ada satu hal yang kami miliki tentang Windows: kami menggunakan nama yang case-sensitive. Jadi "MYFILE" dan "myfile" adalah hal yang berbeda.
sumber
Anda tidak dapat memiliki dua entitas dengan nama yang sama di lokasi yang sama. apa yang akan terjadi ketika Anda ingin menyimpan atau menyimpan file? entitas penyihir akan memilih OS? jadi karena kemungkinan kebingungan Anda tidak akan dapat memiliki nama yang sama untuk file dan folder di lokasi yang sama. dan omong-omong folder adalah file yang menjadi tuan rumah file lain.
sumber
cat
atauvi
nama itu, maka, jelas, OS harus memilih file tersebut. Mengapa itu tidak berhasil?vi
yang biasanyavim
di Ubuntu sangat senang untuk membuka dan menampilkan direktori dan bahkan mengeditnya. Cobalah:vi .
cat
atauvi
ditujukan kepada nama itu , interpretasi logis adalah memohonnya pada file daripada pada subdirektori. Fakta bahwa perintah (berorientasi) file (vi
) juga berfungsi pada direktori (sub) tidak relevan dengan pernyataan itu.vim
tidak memperlakukan argumen subdirektori secara naif; dengan kode yang sama dengan yang menangani file.vim
tampaknya (pada tingkat yang sangat sederhana) dua program dalam satu: jika dijalankan pada file, itu bertindak seperti editor teks, dan jika dipanggil pada subdirektori, ini bertindak seperti manajer file.vi
. Bersulang.Saya tahu ini adalah topik lama, tetapi saya memiliki masalah yang sama dan saya ingin berbagi.
Inilah kisah saya (bersabarlah, ada akhir yang bahagia).
Lingkungan:
Kernel Gentoo 4.12.5 64 bit pada reiserfs
Bagaimana ini bisa terjadi?
Saya memiliki beberapa mesin dengan folder yang dibagikan menggunakan sinkronisasi. Di beberapa titik di masa lalu, saya telah menghapus file bernama ".stfolder" dan membuat direktori dengan nama itu. Jadi, mungkin bug tersebut disebabkan oleh sinkronisasi yang menyinkronkan operasi ini di komputer lain.
Sekarang mari kita periksa bug: (Saya beroperasi sebagai root di sini)
Sepertinya file tersebut adalah hantu namun folder tersebut menjawab secara normal (dengan menemukan)
Saya tahu, sangat aneh ...
Saya tidak bisa menghapus file hantu itu!
Tetapi pada akhirnya, saya berhasil menghapusnya dengan memindahkannya pada tmpfs mount point
Saya harus mengatakan bahwa bug tersebut masih ada pada tmpfs, jadi tidak terkait dengan reiserfs:
Seperti yang Anda lihat dalam output bash ini, file hadir dan tidak-hadir pada saat yang sama. Karena kemampuan kucing Schrödinger ini , kita dapat membuat folder dengan nama yang sama.
Tapi tunggu, masih ada lagi (dan Anda harus mengetahui ini dengan jelas): kita juga dapat membuat file dengan nama yang sama.
Hantu tersebut dapat disalin (jadi saya dapat menduplikasi bug), atau dimanipulasi oleh chown, chmod, dll. Satu-satunya batasan adalah Anda tidak dapat memberi nama sehingga Anda harus meletakkannya di direktori kosong dan menggunakan ". *" Sebagai argumen untuk perintah-perintah itu ... tetapi berhasil!
Karena sifatnya itu, file ini kosong sejak awal (itu hanya sebuah bendera untuk sinkronisasi).
Jadi saya ingin tahu apakah saya bisa memasukkan beberapa data ke file itu.
Dan di sini, solusinya datang kepada saya:
Ya, ada karakter yang tidak terlihat dalam file itu, tepat setelah titik.
Ini menjelaskan semuanya.
Terima kasih Tuhan, saya tidak menggunakan "echo test >>. *" Dan ...
sumber
U+200b
adalah "ruang nol lebar" , omong-omong. Saya suka anekdot ini, walaupun saya khawatir itu mungkin tidak sepenuhnya dihitung sebagai jawaban./unix//a/238056/139805
wow ini benar-benar aneh tapi saya hanya melakukan apa yang penulis minta. Ini adalah bagaimana, jadi itu adalah jawaban nyata: P
ini dilakukan oleh:
whoah respon alternatif dua file dengan nama yang sama, bahkan tidak direktori dan file lagi apa yang terjadi ??? _
perilaku yang benar-benar aneh
sumber