Mengapa tidak mungkin memberi nama folder "._." Di Windows 7?

74

Saya hanya memperhatikan bahwa tidak mungkin untuk menamai folder ._.- namanya diberi nama ._. Kadang-kadang, itu menghilang tepat setelah penamaan itu tetapi muncul kembali setelah menyegarkan tampilan. Windows tampaknya memiliki masalah dengan titik-titik di akhir nama file - mengapa ini?

Hitam
sumber
21
Perlu dicatat adalah bahwa Anda menemukan "hack" untuk memulai nama file dengan .di Windows.
jpmc26
8
@ThisNameBetterBeAvailable Belum diuji, tetapi cd -- -_-mungkin dapat berfungsi. Ini --adalah penanda "akhir opsi" yang umum.
TripeHound
13
@ThisNameBetterBeAvailable Tidak, --dengan caranya sendiri " ini adalah akhir dari opsi, perlakukan apa pun yang dimulai dengan -nilai literal ". Baru diuji: mkdir -- -_-dan cd -- -_-berfungsi seperti yang saya harapkan.
TripeHound
2
Atau, ./-_-harus bekerja juga.
glglgl
5
@Alexander Di linux, karena itu tampaknya merupakan tempat komentar, karena cd "-_-"shell menggunakan tanda kutip untuk pengelompokan tetapi tidak memperlakukannya sebagai bagian dari argumen; kesalahan denganinvalid option
Izkata

Jawaban:

123

Windows biasanya membutuhkan file yang tidak memiliki ekstensi atau ekstensi yang panjangnya setidaknya satu karakter; itu tidak keren dengan ekstensi panjang nol, yaitu nama file yang diakhiri dengan .. Folder juga dapat memiliki ekstensi, oleh karena itu, Windows tidak membiarkan nama mereka diakhiri dengan a .. Sumber, dari artikel yang ditautkan oleh DavidPostill :

Gunakan periode untuk memisahkan nama file dasar dari ekstensi dalam nama direktori atau file .

(Tekankan tambang.) Jika Anda mencoba untuk mengakhiri file atau direktori bernama dengan titik, Windows hanya menganggap Anda tidak menginginkan ekstensi dan menghapusnya, bahkan jika Anda membuatnya dengan mddi command prompt.

Zona bahaya! Jika Anda benar-benar ingin nama folder diakhiri ., Anda harus menggunakan urutan sulih nama sulap mentah \\?\. Di prompt perintah, md \\?\C:\path\to\container\._.memang akan membuat folder bernama ._., tetapi banyak program akan memiliki masalah dengan itu, bahkan Explorer:

._.  masalah

Direktori semacam itu hanya dapat dihapus dengan rddiikuti \\?\namanya atau diganti namanya dengan namanya yang pendek (8,3, dir /x).

Ben N
sumber
1
Terima kasih atas jawaban terinci Anda! :) Saya pikir ini akan menjadi folder yang sempurna untuk menyembunyikan hal-hal rahasia seperti kata sandi di dalamnya, karena Anda hanya dapat membuka folder jika Anda mengganti nama terlebih dahulu, dan tidak semua orang tahu cara mengubah nama itu.
Hitam
19
@ EdwardBlack tidak akan menghentikan siapa pun yang bisa membaca pertukaran stack (dan karena itu tidak akan; bahkan memberikan keamanan terhadap adik kecil hipotetis). Nama yang diberikan dir /xmembuatnya sangat mudah, dan ada kalanya nama ini berguna.
Chris H
11
FWIW, alat baris perintah Cygwin juga dapat membuat (dan memanipulasi) direktori tersebut pada Windows 7, tanpa menggunakan urutan ajaib.
Steve Jessop
4
@ EdwardBlack Seperti yang disebutkan Chris H, ini bukan rahasia, jadi Anda tidak harus menyimpan sesuatu yang sangat penting dalam folder seperti itu. Selain itu, kerahasiaan dan perlindungan digital adalah masalah yang telah dipecahkan berulang kali. Anda dapat menggunakan sejumlah metode dan program enkripsi untuk menjaga keamanan tanpa bergantung pada nama folder yang tidak jelas.
Kris Harper
3
Nitpick: Setidaknya dalam 8,3 hari (saya belum menyelidiki apa yang ditulis ke disk pada NTFS) periode tidak pernah ditulis ke disk di tempat pertama. Nama itu dibagi menjadi nama & ekstensi, mereka disimpan secara terpisah. Setelah membaca itu mengambil nama dan jika ada ekstensi menambahkan periode dan ekstensi ke nama Jadi tidak ada cara untuk mengekspresikan ._. dalam struktur direktori, tentu saja Anda kehilangan titik jejak.
Loren Pechtel
22

Windows tampaknya memiliki masalah dengan titik-titik di akhir nama file? Kenapa ini?

Jangan akhiri nama file atau direktori dengan spasi atau titik. Meskipun sistem file yang mendasari dapat mendukung nama-nama tersebut, Windows shell dan antarmuka pengguna tidak.

Tautan sumber di bawah ini menjelaskan lebih detail tentang aturan penamaan.

Sumber Memberi Nama File, Jalur, dan Ruang Nama

DavidPostill
sumber
5
Ini masih terdengar seperti bug bagi saya.
Nilai
@ralu Jika ini adalah bug maka MS tampaknya sama sekali tidak menarik untuk memperbaikinya. Pembatasan itu sudah ada sejak Windows XP (jika tidak sebelumnya).
DavidPostill
Windows XP? Dugaan saya adalah bahwa pembatasan ini berakar pada MS-DOS 0.x - mari kita minta Tn. Gates untuk membereskan masalah ...
Christian Severin
17

Itu bukan bug. Ini dirancang untuk mencegah masalah kompatibilitas.
Ini adalah sisa dari masa DOS lama.

FAT12 (floppy) dan FAT16 filesystems (FAT16 sebelum dukungan nama file lama diperkenalkan di Windows 95) hanya memiliki nama file yang disimpan dalam 11 byte:
8 byte untuk nama, 3 untuk ekstensi. "Periode" antara nama dan ekstensi bahkan tidak disimpan. Itu tersirat dan secara otomatis ditambahkan untuk keperluan tampilan.
Direktori tidak memiliki ekstensi sama sekali. Sebaliknya 3 byte untuk ekstensi diisi dengan karakter "$" (yang ilegal dengan nama asli).
Karena Windows masih kompatibel dengan Explorer ini dan banyak komponen Windows lainnya diam-diam membuat periode trailing menghilang untuk mencegah masalah kompatibilitas.
Seperti yang telah dinyatakan oleh orang lain, Anda benar-benar dapat menangani folder tersebut dengan menggunakan semantik RAW (awalan \\? \ Sebelum nama path absolut).
Di belakang layar, NTFS dan sistem file jaringan tidak memiliki masalah dengan file dan folder tersebut. Ini hanya kasus Explorer yang berusaha mencegah pengguna membuat sesuatu yang dapat menyebabkan masalah bagi perangkat lunak lain.

(Bahkan ada beberapa kekurangan lainnya juga:
Nama file seperti COM, COM1, COM2, AUX, PRN, LPT, LPT1, LPT2, LPT3, CON dapat menyebabkan masalah serupa di mana Explorer dan banyak bagian Windows lainnya menjadi bingung karena nama-nama ini adalah "nama cadangan" yang juga berasal dari era DOS.)

Tonny
sumber
3
Untuk setiap pembaca lain yang awalnya ragu sehubungan dengan titik yang tidak disimpan: itu benar untuk CP / M dan semua versi FAT, termasuk FAT16 dan FAT32 .
Ben N
1
Saya ingat beberapa program DOS lama (berjalan pada DOS aktual, mungkin menggunakan fungsi INT13 secara langsung) memberi saya kesedihan sekali dengan entah bagaimana berhasil membuat file bernama a: foo.bar pada c: drive ...
rackandboneman
2
@ BenN: sebenarnya, pada FAT32 itu sedikit berbeda; itu menyimpan kedua nama file pendek (8 + 3 byte dengan "kompatibel implisit dot" nama-nama yang kompatibel), ditambah nama file yang panjang (sering disebut LFN), yang terdiri dari hingga 255 UCS-2 karakter dengan titik eksplisit, dan kecuali Anda bekerja dengan aplikasi 16 bit, Anda selalu bekerja dengan LFN.
Matteo Italia
1
@MatteoItalia Ini adalah pemahaman saya bahwa nama file yang panjang disimpan dalam entri file palsu; Instalasi Windows yang dalam pengetahuan mencari entri ini dan menjadikannya alih-alih SFN jika memungkinkan. Lihat posting Raymond Chen pada subjek , atau bagian VFAT dari spesifikasi format FAT32 yang saya tautkan di atas.
Ben N
1
-1 Anda salah tentang ekstensi direktori; mungkin itu benar untuk CP / M (ingatanku jelek tentang OS itu), tapi aku sudah menggunakan direktori "programm.ing" di pohonku sejak DOS kali, dan lihat win.tue.nl/~aeb/linux/ fs / fat / fat-1.html - entri direktori ditangani persis seperti file, mereka dapat memiliki nama 8,3 juga. Tes: buat direktori 8.3 ( mkdir testfile.name) dan tampilkan nama DOS-nya di Windows ( dir /x) - Anda akan mendapatkan TESTFI~1.NAM, seperti yang diharapkan.
vaxquis
3

Masalahnya di sini adalah bahwa Windows (DOS) diperbolehkan untuk nama file 8,3 pada sistem file FAT. Artinya, 8 karakter, diikuti oleh a. diikuti oleh tiga karakter. Unix dan Linux mengizinkan karakter apa pun, kecuali / dan \ 0. \ 0 adalah terminator string karakter C, dan / adalah pemisah direktori. Segala sesuatu yang lain dapat digunakan.

Windows 95 mengatasi masalah ini dengan memelihara basis data pendek (8,3) nama file untuk Long File Names (LFN) meta-data. Jika Anda menghapus file OS Windows 95 Anda, Anda akan dibiarkan memiliki file dengan nama aneh pada disk pada instalasi Windows 95 Anda berikutnya. Sebagai contoh, "My Documents" dapat dinamai MYDOCU ~ 1 pada disk. Jelas, jika Anda kehilangan meta-data, Anda tidak akan dapat dengan mudah mengubahnya.

Shell harus mengatasi banyak peningkatan historis yang berkeliaran sejak zaman MS-DOS.

Semoga ini membantu

Ed Neville
sumber
1
Sebenarnya tidak ada database sendiri; Windows hanya macet bagian-bagian dari nama file panjang ke disk sebagai file palsu. Lihat posting Raymond Chen tentang masalah ini .
Ben N