Apakah dianggap praktik terbaik untuk tidak menggunakan huruf kapital dalam penamaan file?

28

Orang mengatakan Anda tidak boleh menggunakan spasi dalam penamaan file Unix. Apakah ada alasan bagus untuk tidak menggunakan huruf kapital dalam nama file (yaitu, File_Name.txtvs. file_name.txt)? Atau ini hanya masalah preferensi pribadi?

DD343
sumber
Anda dapat menggunakan topi tetapi sebagai standar jangan menggunakannya. Cukup gunakan huruf kecil dan _ jadi file_name.txt bagus.
Shabir A.
9
Ada beberapa hal Unixy yang menggunakan nama file dengan huruf kapital ... beberapa contoh termasuk Makefile, INSTALL, CHANGELOG dan tentu saja README yang terhormat.
Thomas
PSR-2 - standar penamaan de-facto dari dunia PHP, yang berjalan secara mayoritas di Linux menggunakan camelCase php-fig.org/psr/psr-2
jdog

Jawaban:

46

Orang mengatakan Anda tidak boleh spasi dalam penamaan file Unix.

Orang mengatakan banyak hal. Ada beberapa alat yang mungkin gagal, tetapi semoga jumlahnya sedikit pada saat ini, karena ruang adalah virus yang diperbanyak oleh perusahaan-perusahaan OS milik konsumen raksasa dan sekarang mustahil untuk dihindari.

Spaces membuat menentukan nama file pada baris perintah, dll., Canggung. Itu saja. Satu-satunya karakter yang dilarang pada sistem * nix adalah NUL (jangan khawatir, itu tidak ada di keyboard Anda, atau siapa pun) dan /, karena itu adalah pemisah jalur. 1 Selain itu, apa pun terjadi. Elemen jalur individual (nama file) dibatasi hingga 255 byte (kemungkinan komplikasi jika Anda menggunakan rangkaian karakter yang diperluas) dan menyelesaikan jalur hingga 4 KiB.

Atau ini hanya masalah preferensi pribadi

Saya akan mengatakan itu. Kebanyakan DE ini tampaknya membuat membunuh direktori dikapitalisasi di Anda $HOME( Downloads, Desktop, Documents- yang Dsangat populer), jadi tidak ada yang aneh tentang hal itu. Ada juga file tradisional yang sangat umum dengan huruf kapital di dalamnya, seperti .Xclientsdan .Xauthority.

Nilai kapitalisasi hal-hal di awal adalah bahwa ketika terdaftar secara leksikografis mereka akan datang sebelum hal-hal kecil - setidaknya, dengan banyak alat, dan tergantung pada lokal.

Saya penggemar case unta (alias. CamelCase) dan menggunakannya dengan nama file, misalnya /home/goldilocks/blueSuedeShoes- tidak peduli apa yang ada di sana. Pasti masalah preferensi pribadi tetapi belum membuat saya sedih.

File kelas Java cenderung mengandung huruf kapital secara alami, karena nama kelas Java melakukannya. Dan tentu saja, jangan lupa NetworkManager, bahkan jika beberapa dari kita lebih suka.


1. Ada yang lebih terbatas, direkomendasikan oleh POSIX "Portable Filename Character Set" yang tidak termasuk spasi - tetapi itu termasuk huruf besar! POSIX juga menentukan batasan yang lebih umum tentang "karakter garis miring dan byte nol" di tempat lain dalam dokumen yang sama . Ini mencerminkan, atau tercermin dalam, praktik konvensional lama .

goldilocks
sumber
5
Mia: "Apakah itu fakta?" Vincent: "Bukan, bukan itu yang kudengar." Mia: "Siapa yang memberitahumu ini?" Vincent: "Mereka." Mia: "Mereka banyak bicara, bukan?" Vincent: "Tentu saja."
corsiKa
4
“The value of memanfaatkan sesuatu di awal adalah bahwa ketika terdaftar leksikografi [...], mereka akan datang sebelum yang lainnya.” - Tentu saja, ini hanya bekerja jika sebagian dari nama file yang huruf kecil, memberikan Anda alasan untuk cadangan topi ( setidaknya topi terkemuka ) untuk Anda READMEdan Makefiledan seterusnya.
Blacklight Shining
4
Pada banyak keyboard, ctrl-space atau ctrl- @ atau alt-0 akan mengetikkan NUL.
dubiousjim
2
@dodgethesteamroller Saya yakin Anda salah tentang forward slash (atau lebih tepatnya, byte dengan nilai 0x2F) di ext *. Bahkan, saya tidak percaya itu bahkan akan sampai ke sistem file; layer VFS akan melarangnya terlepas dari backing store.
zwol
3
tapi jangan gunakan spasi dalam nama file dan nama direktori. bahkan jika sistem Anda secara teknis mengizinkannya, itu hanya akan menyebabkan kesedihan Anda. Alih-alih gunakan "_" karakter garis bawah.
SnakeDoc
9

Salah satu alasan untuk menghindari batas dalam nama file adalah bahwa urutan pengurutan di Unix peka terhadap huruf besar-kecil, sehingga file yang dimulai dengan huruf kapital akan tampak rusak. Itulah alasan mengapa Makefilebiasanya dinamai menggunakan modal M- itu adalah salah satu file yang ingin Anda lihat pertama kali, tanpa menggulir / melewati palung a-l.

Ini mengatakan, Anda dapat melakukan jauh lebih buruk dalam hal nama file:

  • menggunakan spasi akan memecah beberapa program dan skrip yang ditulis dengan buruk yang tidak mengutip nama file dengan benar
  • memulai nama file dengan -dapat menyebabkan masalah karena banyak program akan melihatnya sebagai opsi baris perintah alih-alih nama file (misalnya rm -rtidak akan menghapus nama file -r).
  • memulai nama file dengan .akan menyembunyikannya dari banyak utilitas dan shell globbing (mis. rm *tidak akan menghapus file seperti .config)
  • menggunakan karakter khusus seperti |<>*?dan bahkan karakter yang tidak dapat dicetak seperti newlinesecara teknis dimungkinkan, tetapi dapat merusak skrip / program yang mirip dengan karakter spasi. Perbedaannya adalah bahwa karakter spasi sering digunakan, sehingga programmer cenderung menguji program mereka terhadapnya, sementara karakter yang kurang populer sering tetap belum teruji.
Dmitry Grigoryev
sumber
4
Hal ini cenderung tidak lagi benar, pengurutan di lokal modern cenderung tidak peka terhadap kasus saat ini dan banyak alat dan shell globbings menghormati lokal untuk mengurutkan nama file.
Stéphane Chazelas
2
Apakah Anda bermaksud mengatakan: rm *tidak akan menghapus file seperti .config?
Wildcard
1
@Wildcard tidak terlalu, tapi mungkin contoh Anda lebih realistis daripada milik saya. Maksud saya adalah untuk menunjukkan bahwa nama file dimulai dengan titik kebal terhadap globbing bahkan jika pengguna menentukan titik itu secara eksplisit.
Dmitry Grigoryev
1
@ DmitryGrigoryev, tidak, mereka tidak. Coba ls -ald. ?? * di direktori mana pun yang memiliki file dot.
Bill Barth
1
Saya percaya bahwa akan lebih tepat untuk mengatakan "Jika Anda memilih untuk menggunakan huruf kapital dalam nama file, Anda harus mengingat fakta bahwa urutan penyortiran dalam Unix (kadang-kadang) sensitif huruf." Pengguna mungkin menginginkan perilaku ini, dan Makefiledan READMEmerupakan contoh sempurna untuk itu. Perhatikan juga bahwa efek ini dapat diabaikan jika surat itu bukan huruf pertama dalam namanya, jadi ini bukan masalah besar jika Anda menggunakan camelCase. Tentu, Anda mungkin terkejut melihat anOctagonsebelumnya angle, tetapi setidaknya mereka akan bersama dalam daftar.
G-Man Mengatakan 'Reinstate Monica'
6

Jika Anda akan berinteraksi dengan lingkungan Windows, Anda harus menghindari huruf besar karena Windows akan mengurangi semuanya. Ini lebih sering masalah terjadi sebaliknya; tautan ke Page_2.htmlakan ditemukan page_2.htmldi Windows, tetapi akan gagal di Unix.

NL_Derek
sumber
10
Itu tidak benar. NTFS, VFAT, dan exFAT semuanya case-insensitive tetapi melestarikan case, artinya mereka mengabaikan case untuk keperluan pencarian, tetapi tetap menyimpan case. Hal yang sama berlaku untuk HFS +, sistem file default di OSX. NTFS bahkan memiliki namespace POSIX yang bekerja persis seperti semua Unix lainnya, yaitu nama file yang sangat panjang dari oktet yang tidak diinterpretasikan, dengan hanya NULdan /dilarang.
Jörg W Mittag
5
Lebih penting lagi, "case-insensitive but preserving case" adalah cara lain untuk mengatakan "mampu menimpa file A secara diam-diam karena namanya hanya berbeda dalam hal dari file B" (atau sebaliknya, tergantung pada yang disimpan kemudian). Dengan kata lain, jika Anda menggunakan shell * nix untuk mengakses share NTFS, cat > Fooakan menimpa file foo. Perilaku ini cenderung tidak terduga dan membingungkan jika Anda terbiasa dengan filesystem case-preserving dan case-sensitive seperti ext *.
dodgethesteamroller
1
@ JörgWMittag Kecuali saya salah, NTFS tidak peka huruf besar-kecil, hanya saja windows bekerja dengan cara yang misterius.
Cthulhu
1
@ Cthulhu: AFAIK, NTFS memiliki empat ruang nama berbeda di mana Anda dapat membuat nama untuk file. (Saya tidak tahu apakah satu file dapat memiliki nama di lebih dari satu namespace.) Sebuah namespace "DOS" (8.3, case-insensitive), namespace "long" (case-insensitive, case-preserving, UTF-16), namespace khusus untuk nama "short long", yaitu nama yang case-nya harus dipertahankan tetapi sesuai dengan 8.3, dan namespace POSIX (aliran oktet selain \0dan /, case-sensitive). Setidaknya itulah yang saya ingat. Tapi saya setuju bahwa itu agak berantakan. Ada batasan lebih lanjut dalam ...
Jörg W Mittag
1
... kernel, dan bahkan pembatasan lebih lanjut dalam API (sebenarnya, ada API yang berbeda dari era yang berbeda dengan batasan yang berbeda), ada pembatasan karena kompatibilitas dengan DOS dan FAT, ada batasan dalam command interpreter, ada batasan dalam ( grafis) shell, dan ada batasan di Explorer. Dan seringkali tidak mungkin untuk menentukan dengan pasti dari mana datangnya batasan. Ini gila. Saya pernah berhasil membuat file menggunakan Explorer , yang tidak dapat dibuka, disalin, dipindahkan, diganti nama atau dihapus menggunakan alat apa pun yang saya coba. Pada dasarnya tetap pada ...
Jörg W Mittag
4

Salah satu alasan untuk menghindari pembatasan adalah bahwa bashpenyelesaian tab s peka huruf besar-kecil (setidaknya secara default) —ini masih membuat saya tersandung setiap kali saya berakhir di depan bashdengan konfigurasi default. Tentu, ada shell populer lainnya, tetapi ini dikombinasikan dengan fakta bahwa bashshell login default pada banyak OS berarti bahwa default seringkali penyelesaian case-sensitive. Menggunakan nama file semua-huruf kecil agak menyederhanakan hal-hal di sini.

Blacklight Shining
sumber
2
echo set completion-ignore-case On >> ~/.inputrcdapat membantu sedikit, setidaknya di sistem Anda sendiri.
wchargin
1
Saya tidak jelas apa gunanya jawaban ini - kecuali Anda mungkin lupa bagaimana Anda "mengeja" nama file. Misalnya, jika Anda membuat file bernama Foodan kemudian ketik cat f(Tab), itu akan gagal. Tetapi hal yang sama terjadi jika Anda mengetik cat foo, cat Foobaratau cat Fu- fakta bahwa Anda akan kesulitan mengakses file yang namanya tidak Anda ingat dengan benar tidak benar-benar ada hubungannya dengan pelengkapan otomatis.
G-Man Mengatakan 'Reinstate Monica'
@ G-Man Touché. Namun, menggunakan nama file semua-huruf kecil berarti Anda memiliki satu hal yang kurang untuk diingat tentang mereka.
Blacklight Shining
3

Karena NL_Derek membuka kaleng cacing ini, tetapi tidak mengartikulasikannya dengan benar, saya akan mengatakan ini:

Tidak apa-apa menggunakan huruf kapital, tetapi Anda harus menghindari membuat file (dalam direktori yang sama) yang berbeda hanya berdasarkan kasus , misalnya, File_Name.txt dan file_name.txt , karena

  • Jika Anda entah bagaimana membuat direktori tersedia untuk sistem Windows, itu tidak akan dapat mengakses kedua file. Mungkin akan dapat mengakses hanya yang muncul pertama kali di direktori, terlepas dari nama yang Anda gunakan. (Kecuali: itu dapat memberi Anda akses kepada mereka sebagai FILENA~1.TXTdan FILENA~2.TXT - ketik dir /xuntuk melihat nama pendek apa (jika ada) dengan nama panjang apa.)
  • Jika sistem file sebenarnya adalah sistem file Windows (mis., Dipasang dari sistem file exFAT atau NTFS dari server NFS yang menjalankan Windows), kedua nama tersebut (mungkin) tidak akan diizinkan untuk hidup berdampingan. Misalnya, jika Anda melakukannya dan , Anda mungkin berakhir dengan satu file, berisi output dari .cmd1 > foocmd2 > Foocmd2
  • Demikian pula, jika Anda pernah mentransfer file ke sistem Windows, kedua nama (mungkin) tidak akan diizinkan untuk hidup berdampingan. Misalnya, jika Anda membuat arsip (misalnya, zip) yang berisi dua file, dan mengekstraknya pada sistem Windows, file kedua mungkin akan menimpa yang pertama. Hal yang sama jika Anda mentransfernya ke kotak Windows dengan FTP atau yang serupa.
G-Man Mengatakan 'Reinstate Monica'
sumber
Tidak hanya Windows, tetapi beberapa OS lainnya (VMS, saya pikir, CP / M tentu saja, yang lain ...)
Toby Speight
3

Terlepas dari alasan teknis, saya memiliki aspek praktis untuk ini. Menempel huruf kecil akan memastikan bahwa pencarian lebih mudah kecuali seseorang terlalu suka menggunakan grep -i atau cari -i. Kadang-kadang, bahkan camelCase dapat membingungkan jika kita harus menggunakan serangkaian kata-kata seperti-kasus seperti di storageNYCDCPrimary. Jadi, saya menemukan yang terbaik untuk tetap menggunakan huruf kecil dan membumbui mereka dengan garis bawah atau tanda hubung agar mudah dibaca, seperti storage_nyc_dc_primary.

Melompat Kelinci
sumber
snake_case mudah dilihat - storageNycDcPrimarydan StorageNycDcPrimarykeduanya aneh untuk dibaca.
go2null
1

Saya menganggap itu adalah praktik terbaik untuk menghindari menggunakan huruf besar dan spasi dalam nama file.

Beberapa akan mengatakan mereka tidak setuju tetapi ini adalah masalah atau apa yang saya sebut keyakinan agama : sulit untuk didiskusikan dan disepakati. Mereka yang tidak setuju mengatakan bahwa sebagian besar alat sekarang ditetapkan menjadi ibukota dan ruang ramah: mereka benar tetapi ini bukan pertanyaannya.

Pertanyaan yang tepat adalah berapa banyak yang Anda butuhkan untuk menggunakan huruf kapital dan spasi dalam nama file. Untuk pertanyaan ini, kecuali ketika saya pemrograman di Jawa, jawabannya sebagian besar sepanjang waktu: Saya tidak perlu modal dan spasi di nama file saya . Semua ruang saya ganti dengan garis bawah ( _) atau tanda minus ( -), dan karena itu saya tidak menggunakan kasing unta (alias. CamelCase) yang bertentangan dengan beberapa agama lain.

Banyak orang menyebut saya omong kosong karena melakukan dan mengajarkan bahwa - beberapa dari mereka masih melakukannya - beberapa dari mereka tersandung alat yang tidak ramah modal / ruang dan datang kepada saya mengatakan bahwa saya benar dan bahwa mereka seharusnya mendengarkan saya. Lakukan apa pun yang Anda inginkan , dan jika Anda menggunakan huruf besar dan spasi dalam nama file, saya harap Anda tidak akan pernah tersandung pada alat yang ditulis dengan buruk. Namun, jika Anda menggunakan alat tersebut, semoga lagi, itu tidak akan sulit untuk diperbaiki dan tidak akan membebani bisnis Anda dan / atau Anda banyak uang dan / atau waktu. Tetapi jika itu berakibat buruk, Anda akan ingat bahwa beberapa orang mengatakan di masa lalu bahwa menggunakan huruf besar dan spasi dalam nama file adalah praktik yang buruk.

Dan satu hal lagi, jika Anda ingin menghindari semua masalah , tidak ada karakter khusus dalam nama file (hanya huruf kecil, digit, garis bawah dan minus [1]). Daftar karakter yang tidak diinginkan ini juga mencakup semua karakter non ascii (ya, Prancis dan orang-orang non Inggris lainnya - dan saya adalah salah satunya - tidak satupun dari mereka: à, â, ä, ç, é, ..., ö, æ, œ , ...). Ini juga meluas ke banyak hal lainnya, termasuk login dan kata sandi . Saya akan membiarkan Anda menebak apa yang terjadi ketika Anda memberikan penawaran atau penawaran ganda ( 'atau ") di login atau kata sandi yang ditangani oleh skrip bash yang tidak ditulis oleh sysadmin yang dikonfirmasi ....

[1]: mungkin kita bisa memperluas bahwa untuk ~, @, #dan beberapa orang lain, tapi ini adalah mencari masalah (dan ya aku tahu tentang file emacs ...).

jfg956
sumber
1
Hal terakhir adalah sesuatu yang harus ditangani oleh sistem otentikasi, bukan pengguna yang membuat kata sandi. Jika sistem membatasi rangkaian karakter yang diizinkan dalam kata sandi, itu adalah sistem yang buruk.
Blacklight Shining
Yah, membatasi karakter dalam kata sandi adalah topik perdebatan: li1, oO0, ... tergantung kesukaan, sulit untuk berkomunikasi. Beberapa orang akan mengatakan bahwa kata sandi tidak boleh dikomunikasikan, tetapi WiFi Key adalah semacam kata sandi yang saya komunikasikan kepada teman-teman saya ketika mereka berada di tempat saya ...
jfg956
Itu adalah pilihan sadar Anda untuk menghindari penggunaan beberapa karakter, daripada batasan yang dibangun ke dalam sistem (dalam contoh ini, standar Wi-Fi, implementasi AP dan klien, dll). Jika Anda menggunakan serangkaian karakter yang dipilih secara acak sebagai kata sandi, Anda dapat meningkatkan keterbacaan dengan menggunakan (atau mendorong penerima untuk menggunakan) font monospace, atau dengan hanya menggunakan mesin terbang yang lebih khas jika Anda menulisnya (huruf kecil yang disesuaikan) L, huruf besar I, dan angka 1; huruf kecil O, huruf besar bundar O, angka terpotong atau putus-putus 0; dll). Atau, Anda dapat menggunakan frasa sandi.
Blacklight Shining