Mengapa nama file yang diawali dengan titik tersembunyi? Bisakah saya menyembunyikan file tanpa menggunakan titik sebagai karakter pertama mereka?


15

Awalnya saya pikir itu kebetulan, tetapi sekarang saya melihat bahkan ada tag untuk itu: semua nama file tersembunyi dimulai dengan titik. Apakah ini sebuah konvensi? Mengapa itu dipilih? Bisakah itu diubah? Atau dengan kata lain (sebagai pertanyaan terkait yang disarankan oleh @evilsoup yang menyiratkan jawaban kepada sekelompok orang lain): dapatkah saya menyembunyikan file tanpa menamai ulang (menggunakan .sebagai karakter pertama dari nama mereka)?


Atau "mengapa semua nama file tersembunyi diawali dengan titik?", Jika Anda mau.
JMCF125

2
Ya itu adalah konvensi, mengapa mengapa itu dipilih siapa yang tahu, tanyakan pada perintis UNIX, ini adalah konvensi lama .
terdon

4
Baca artikel Wikipedia terkait tentang file tersembunyi dan plus.google.com/101960720994009339267/posts/R58WgWwN9jp untuk aspek sejarah. Itu tidak bisa diubah.
jofel

Saya pikir Linux sepenuhnya dapat dikustomisasi ...
JMCF125

1
@ JMCF125 sebenarnya komentar itu keluar sedikit lebih sarkastik daripada yang saya maksudkan, maaf tentang itu. Apakah Anda benar-benar bertanya: 'bisakah saya menyembunyikan file tanpa mengganti nama mereka?' - jika itu masalahnya, Anda harus mengeditnya ke dalam pertanyaan Anda.
evilsoup

Jawaban:


26

Menurut Wikipedia ,

Gagasan bahwa nama file didahului oleh a. harus disembunyikan adalah hasil dari bug perangkat lunak di masa-masa awal Unix. Ketika entri khusus .dan ..direktori ditambahkan ke sistem file, diputuskan bahwa perintah ls tidak boleh menampilkannya. Namun, program ini ditulis secara keliru untuk mengecualikan file apa pun yang namanya dimulai dengan .karakter, bukan nama yang tepat .atau ...

... jadi itu dimulai sebagai bug, dan kemudian dianut sebagai fitur (sebagai catatan, .adalah tautan ke direktori saat ini dan ..merupakan tautan ke direktori di atasnya, tapi saya yakin Anda sudah tahu itu sudah ). Karena metode menyembunyikan file ini sebenarnya cukup baik sebagian besar waktu, saya kira tidak ada yang pernah repot-repot menerapkan menyembunyikan file gaya Windows.

Ada juga fakta bahwa menerapkan perilaku yang berbeda akan menghasilkan jumlah fragmentasi yang lebih besar ke dunia * nix, yang merupakan hal terakhir yang diinginkan siapa pun.

Ada metode lain untuk menyembunyikan file yang tidak melibatkan penggantian nama mereka, tetapi hanya berfungsi untuk manajer file GUI (dan itu tidak universal di antara mereka - yang Linux utama menggunakannya, tapi saya tidak berpikir Finder OSX melakukannya, dan semakin banyak relung pengelola file Linux cenderung mendukung perilaku ini): Anda dapat membuat file bernama .hidden, dan meletakkan nama file yang ingin Anda sembunyikan di dalamnya, satu per baris. lsdan gumpalan shell tidak akan menghargai ini, tetapi mungkin masih berguna bagi Anda.


Persembunyian itu tidak berhasil pada Unity. Tetapi ketika Anda langsung menjawab semua pertanyaan, saya akan menandainya sebagai jawaban yang diterima (meskipun saya membenarkan kedua jawaban).
JMCF125

3
Halaman Wikipedia tidak lagi berisi informasi tentang ini. Namun, Rob Pike bekerja pada UNIX di Bell Labs dan membuat posting pendek tentang topik: plus.google.com/u/0/+RobPikeTheHuman/posts/R58WgWwN9jp
Alexander

" OS X ", bukan "OSX".
Peter Mortensen

14

File yang dimulai dengan titik diabaikan secara default oleh perintah "ls", yang memiliki efek yang kurang lebih sama dari file "tersembunyi" tetapi tidak sama (perintah lain mungkin memilih untuk melakukan hal yang sama atau tidak). File yang dimulai dengan titik tidak "tersembunyi" karena "tersembunyi" bukan salah satu dari atributnya. Tidak seperti di DOS / Windows, "tersembunyi" bukan atribut di Unix. Ada banyak atribut di Unix ("man chattr" akan memberi tahu Anda semuanya) tetapi disembunyikan bukan salah satunya.

Alasan mengapa dot-file diabaikan oleh "ls" sebenarnya cukup lucu / memalukan. Itu bukan keputusan desain tetapi hasil bug perangkat lunak di masa-masa awal Unix . Saat istimewa. dan .. entri direktori ditambahkan ke sistem file, diputuskan bahwa perintah ls tidak boleh menampilkannya karena mereka menghalangi. Namun, program ini ditulis dengan tergesa-gesa untuk mengecualikan file apa pun yang namanya dimulai dengan a. karakter, alih-alih nama persis "." atau "..". Dan itu menciptakan preseden yang telah diikuti sejak saat itu di Unix. Lucunya, ketika orang-orang Unix pindah untuk membuat Plan 9 mereka tidak sengaja menaruh dot-file di dalamnya .


Saya memang mencoba man chattr, meskipun saya pikir mungkin saya perlu beberapa paket atau program khusus untuk membuat file tersembunyi lainnya mungkin.
JMCF125

0

Apakah Anda dapat menyembunyikan file atau tidak, dan pada kondisi apa, tergantung pada sistem file yang Anda gunakan dan drivernya. Sistem file Unix tradisional tidak memiliki atribut "sembunyikan" untuk file.

Driver sistem file dapat menyembunyikan file apa pun yang diinginkan, dengan hanya menghilangkan nama mereka ketika memberikan hasil untuk panggilan sistem yang digunakan untuk mendapatkan daftar direktori. Seperti yang dijelaskan sergut dalam jawabannya, file yang dimulai dengan titik tidak benar-benar disembunyikan.

(Ini juga bagaimana rootkit dapat menyembunyikan file mereka: mereka menghubungkan ke panggilan sistem yang menghasilkan daftar direktori, dan menyaring file yang ingin mereka sembunyikan.)

Sebagai contoh, dalam sistem file Oracle ACFS cluster, direktori <filesystem mountpoint>/.ACFS/tersebut benar-benar tersembunyi: tidak akan terdaftar sama sekali, bahkan tidak dengan ls -a. Tetapi jika Anda tahu itu ada di sana, Anda dapat mengaksesnya dengan baik.

Jika Anda menggunakan fitur snapshot dari sistem file ACFS, Anda dapat mengakses snapshot sistem file yang ada dari sistem file tersebut melalui .ACFSdirektori itu. Jika tidak disembunyikan, program cadangan mungkin akan mencadangkan konten sistem file saat ini dan konten snapshot yang ada, yang mungkin tidak diinginkan; biasanya Anda ingin mencadangkan keadaan saat ini atau keadaan satu snapshot tertentu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.