Mengapa beberapa nama file / folder pada Windows memiliki titik di depannya?

34

Misalnya, di My Documents, ada folder berikut:

.ssh
.subversion

Apakah ini semacam konvensi penamaan yang tidak saya sadari?

Niko Bellic
sumber

Jawaban:

94

Konvensi penamaan ini berasal dari sistem operasi mirip Unix (seperti Linux atau OS X), yang artinya file atau direktori "tersembunyi". Ini berfungsi di mana saja, tetapi penggunaan utamanya adalah untuk menyembunyikan file konfigurasi di direktori home Anda (mis. ~/.cache/Atau ~/.plan- mereka sering disebut "dotfiles").

Dotfiles, dengan cara tertentu, bisa disebut Unix tradisional yang setara dengan direktori "AppData" di Windows. (Banyak program Linux sedang diubah untuk mengikuti spesifikasi direktori dasar XDG , memindahkan konfigurasinya ke ~/.config/& data lainnya ke ~/.cache/& ~/.local/share/- ini membuatnya sedikit lebih mirip dengan AppData\Roamingdan AppData\Local.)

Anda memiliki ini .sshdan .subversiondirektori pada Windows karena Anda telah menggunakan beberapa program - khususnya, OpenSSH dan Subversion - yang telah porting untuk menggunakan API sistem Windows daripada yang POSIX, tetapi belum disesuaikan untuk beberapa konvensi Windows lainnya.

Terkadang adaptasi ini dilewati dengan sengaja, untuk membuat hidup lebih mudah bagi orang-orang yang menggunakan lingkungan seperti Unix seperti Cygwin pada sistem Windows mereka. Sebagai contoh, Cygwin menginstal seperangkat alat seperti Unix standar ls, yang mengabaikan bendera "tersembunyi" Windows dan hanya menghormati .dotfilenamanya. Selain itu, menggunakan lokasi yang sama (mis. <home>/.ssh) Dapat mempermudah sinkronisasi sinkronisasi antara komputer Windows dan Linux / BSD / OSX seseorang.

Juga: Biasanya file-file ini ada di direktori home pengguna , mis. Di Linux, atau di Windows 7+. Sangat jarang bagi mereka untuk ditempatkan di subdirektori "Dokumen" atau "Dokumen Saya"./home/name/.sshC:\Users\name\.ssh


Seperti yang ditulis Rob Pike di Google+ , ini adalah fitur yang tidak disengaja:

Dahulu, ketika desain sistem file Unix sedang dikerjakan, entri .dan ..muncul, untuk membuat navigasi lebih mudah. Saya tidak yakin tetapi saya percaya ..masuk selama Versi 2 menulis ulang, ketika sistem file menjadi hirarkis (memiliki struktur yang sangat berbeda sejak awal). Ketika seseorang mengetik ls, bagaimanapun, file-file ini muncul, jadi Ken atau Dennis menambahkan tes sederhana ke program. Itu di assembler saat itu, tetapi kode tersebut setara dengan sesuatu seperti ini:

if (name[0] == '.') continue;

Pernyataan ini sedikit lebih pendek dari yang seharusnya, yaitu

if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

tapi hei, itu mudah.

Dua hal dihasilkan.

Pertama, preseden buruk ditetapkan. Banyak pemrogram malas lainnya memperkenalkan bug dengan membuat penyederhanaan yang sama. File aktual dimulai dengan titik sering dilewati ketika mereka harus dihitung.

Kedua, dan jauh lebih buruk, ide file "tersembunyi" atau "titik" dibuat. Sebagai akibatnya, lebih banyak pemrogram yang malas mulai memasukkan file ke direktori home semua orang. Saya tidak memiliki banyak hal yang diinstal pada mesin yang saya gunakan untuk mengetik ini, tetapi direktori rumah saya memiliki sekitar seratus file dot dan saya bahkan tidak tahu apa sebagian besar dari mereka atau apakah masih diperlukan . Setiap evaluasi nama file yang melewati direktori home saya diperlambat oleh lumpur yang terakumulasi ini.

grawity
sumber
Terima kasih! Sangat teliti. Dalam folder "C: \ users \ <username> \" saya, saya mencoba menggunakan perintah "ls" di Windows PowerShell dan lagi di Cygwin Terminal. PowerShell mencantumkan dot-file dan menyembunyikan AppData, sedangkan Terminal Cygwin melakukan kebalikannya. Menarik! Cygwin menggunakan konvensi Unix.
Niko Bellic
@NikoBellic: Unix / Cygwin lsmemiliki -aopsi untuk mendaftar semua file.
grawity
1
@Ruslan: Misalnya: VMS tidak memiliki file tersembunyi sama sekali; Anda hanya akan berakhir dengan hal-hal seperti LOGIN.COMatau DECW$MAIL.DAT di direktori home Anda . (Saya tidak yakin sistem mana yang populer saat itu.) Unix baru saja dibuat; tidak memiliki konvensi sama sekali.
grawity
2
@grawity MS-DOS 1.0 adalah O-S gaya DEC yang dilakukan oleh Digital Research dan dibeli oleh Microsoft, yang berada di bisnis Unix saat itu. MS-DOS 2.0 dan yang lebih baru menambahkan sistem file hierarkis dan beberapa konvensi Unix termasuk ..untuk "up dir"; Microsoft sebenarnya mengiklankan "fitur Unix canggih" ini.
Fred Foo
1
@ kegembiraan Ah benar, itu Seattle Computer Products mengkloning DRI CP / M. Maaf. Tapi maksud saya adalah Microsoft adalah toko Unix di awal 80-an, dan sistem DEC bukan satu-satunya titik keberangkatan. (Unix awalnya berjalan pada perangkat keras DEC, tetapi saya pikir lebih dipengaruhi oleh CTSS dan Multics daripada DEC OS.)
Fred Foo