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.txt
vs. file_name.txt
)? Atau ini hanya masalah preferensi pribadi?
28
Jawaban:
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.Saya akan mengatakan itu. Kebanyakan DE ini tampaknya membuat membunuh direktori dikapitalisasi di Anda
$HOME
(Downloads
,Desktop
,Documents
- yangD
sangat populer), jadi tidak ada yang aneh tentang hal itu. Ada juga file tradisional yang sangat umum dengan huruf kapital di dalamnya, seperti.Xclients
dan.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 .
sumber
README
danMakefile
dan seterusnya.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
Makefile
biasanya dinamai menggunakan modalM
- itu adalah salah satu file yang ingin Anda lihat pertama kali, tanpa menggulir / melewati palunga-l
.Ini mengatakan, Anda dapat melakukan jauh lebih buruk dalam hal nama file:
-
dapat menyebabkan masalah karena banyak program akan melihatnya sebagai opsi baris perintah alih-alih nama file (misalnyarm -r
tidak akan menghapus nama file-r
)..
akan menyembunyikannya dari banyak utilitas dan shell globbing (mis.rm *
tidak akan menghapus file seperti.config
)|<>*?
dan bahkan karakter yang tidak dapat dicetak sepertinewline
secara 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.sumber
rm *
tidak akan menghapus file seperti.config
?Makefile
danREADME
merupakan 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 melihatanOctagon
sebelumnyaangle
, tetapi setidaknya mereka akan bersama dalam daftar.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.html
akan ditemukanpage_2.html
di Windows, tetapi akan gagal di Unix.sumber
NUL
dan/
dilarang.cat > Foo
akan menimpa filefoo
. Perilaku ini cenderung tidak terduga dan membingungkan jika Anda terbiasa dengan filesystem case-preserving dan case-sensitive seperti ext *.\0
dan/
, case-sensitive). Setidaknya itulah yang saya ingat. Tapi saya setuju bahwa itu agak berantakan. Ada batasan lebih lanjut dalam ...Salah satu alasan untuk menghindari pembatasan adalah bahwa
bash
penyelesaian tab s peka huruf besar-kecil (setidaknya secara default) —ini masih membuat saya tersandung setiap kali saya berakhir di depanbash
dengan konfigurasi default. Tentu, ada shell populer lainnya, tetapi ini dikombinasikan dengan fakta bahwabash
shell login default pada banyak OS berarti bahwa default seringkali penyelesaian case-sensitive. Menggunakan nama file semua-huruf kecil agak menyederhanakan hal-hal di sini.sumber
echo set completion-ignore-case On >> ~/.inputrc
dapat membantu sedikit, setidaknya di sistem Anda sendiri.Foo
dan kemudian ketikcat f
(Tab), itu akan gagal. Tetapi hal yang sama terjadi jika Anda mengetikcat foo
,cat Foobar
ataucat Fu
- fakta bahwa Anda akan kesulitan mengakses file yang namanya tidak Anda ingat dengan benar tidak benar-benar ada hubungannya dengan pelengkapan otomatis.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
danfile_name.txt
, karenaFILENA~1.TXT
danFILENA~2.TXT
- ketikdir /x
untuk melihat nama pendek apa (jika ada) dengan nama panjang apa.)cmd1 > foo
cmd2 > Foo
cmd2
sumber
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.
sumber
storageNycDcPrimary
danStorageNycDcPrimary
keduanya aneh untuk dibaca.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 ...).sumber