Mengapa saya tidak dapat memiliki folder dan file dengan nama yang sama?

21

Saya belum pernah mengalami masalah ini sebelumnya, tetapi untuk beberapa alasan, saya tidak dapat mengganti nama folder saya menjadi packages/.

Inilah strukturnya:

root
  -  packages_old/
  -  packages

Ketika saya mencoba mengganti nama folder dengan Thunar, saya mendapatkan pesan kesalahan yang mengatakan bahwa file tersebut sudah ada. Sama dengan mv:

blender iso $ mv packages_old/ packages/
mv: accessing `packages/': Not a directory

Mengapa saya tidak dapat mengganti nama file dan folder saya untuk memiliki nama yang sama:

root
  -  packages/
  -  packages

Saya bersumpah telah melakukan ini sebelumnya.

Blender
sumber
19
Memori Anda mungkin tidak begitu mudah seperti yang Anda pikirkan. Di platform unix "semuanya adalah file". Anda tidak dapat memiliki file dan folder dengan nama yang sama karena direktori hanyalah jenis file khusus. Ini terkait dengan .dekstensi tradisional pada direktori di /etc. Misalkan Anda melakukannya ls packagesatau vim packages- bagaimana sistem akan tahu jika Anda menginginkan direktori atau file?
jw013
2
Bisakah Anda memberi tahu kami OS apa yang Anda gunakan? Karena Anda tidak dapat memiliki file dan direktori memiliki nama yang sama di sebagian besar OS yang saya tahu
rahmu
2
@ j013, mengapa Anda menjawab dalam komentar dan tidak menulis jawaban ?
andcoz
1
Anda juga tidak dapat melakukannya di Windows. Pada mesin Windows 7 saya, mencoba melakukannya menghasilkan kesalahan:There is already a file with the same name as the folder name you specified. Specify a different name.
Chris Down
4
Di Windows, pengaturan default adalah mengabaikan ekstensi, sehingga Anda dapat memiliki packagedirektori dan package.txtfile di folder yang sama. Dari Windows Explorer, akan muncul bahwa Anda harus entri yang disebut "paket", padahal sebenarnya, itu hanya menyembunyikan bagian dari nama file satu.
Arcege

Jawaban:

35

Di Unix, hampir semuanya adalah file. Direktori adalah jenis file khusus yang dari perspektif pengguna dapat "berisi" file lain.

Kesalahan Not a directoryterjadi karena file Anda yang ada bukan direktori, dan karena direktori adalah jenis file, dan tidak ada dua file yang bernama identik dalam satu direktori, operasi tidak dapat dilakukan.

Chris Down
sumber
6
Adapun masalah memori Anda, mungkin di masa lalu file dan direktori Anda memiliki nama yang sama tetapi dengan kasus yang berbeda, seperti "paket" dan "Paket". Nama file peka huruf besar kecil, jadi itu akan berfungsi.
noamtm
2

Karena jika Anda dapat melakukan hal seperti itu, hidup akan menyedihkan bagi programmer seperti saya ketika saya mencoba untuk mengulang file dalam direktori.

Untuk pseudocode berikut:

isDir('/path/to/same_file_and_folder_name')

Haruskah OS menjawab benar atau salah?

Scott Yang
sumber
Seharusnya mengembalikan 'keduanya'.
Anthon
3
isAlive (" Schrödinger's cat ") :-)
G-Man Mengatakan 'Reinstate Monica'
1
@ G-Man Ketik boolean diharapkan, mendapat objek (janji).
Scott Yang