Apa alasan teknis yang ada untuk tidak menggunakan karakter spasi dalam nama file?

75

Seseorang yang saya kenal menyatakan kekesalannya hari ini mengenai kita yang cenderung tidak menggunakan spasi dalam nama file kita, misalnya NamingThingsLikeThis.txt- meskipun sebagian besar sistem operasi modern mendukung ruang dalam nama file.

Apakah ada alasan teknis bahwa masih umum untuk melihat nama file tanpa spasi (sesuai)? Jika demikian, apa alasan teknis ini bahwa ruang dalam nama file dihindari atau dihilangkan, dan dalam keadaan apa mereka relevan?

Alasan paling jelas yang dapat saya pikirkan, dan mengapa saya biasanya menghindarinya, adalah kutipan tambahan yang diperlukan pada baris perintah ketika berurusan dengan file-file tersebut. Apakah ada alasan teknis penting lainnya?

Chris W. Rea
sumber
Seperti yang Anda katakan, mereka jauh lebih mudah untuk ditangani di baris perintah. Dan untuk pemrograman saya tidak yakin apakah mungkin atau layak untuk menggunakan spasi dalam nama file.
Alvin Row

Jawaban:

66

Karakter spasi putih dalam nama file bisa menjadi masalah kerajaan yang tepat dalam pepatah dalam banyak konteks pada baris perintah, dan dalam skrip, di mana Anda harus berhati-hati untuk memastikan mereka lolos dengan benar sehingga tidak terlihat seperti pemisah dari perintah yang Anda miliki. berlari.

Lebih aman untuk tidak memilikinya di sana, bahkan jika Anda yakin file / dir / apa pun tidak akan pernah digunakan dalam konteks seperti itu.

Itu, dan kebiasaan lama sangat sulit.

David Spillett
sumber
Mereka juga merupakan rasa sakit kerajaan yang tepat untuk dihadapi maka Anda harus membuat jalur dan memodifikasinya. Memastikan bahwa komponen tidak dikutip dan tidak dihapus untuk modifikasi sebelum kembali melarikan diri / mengutip kembali, terutama jika potongan dikirim ke bit kode lain untuk dimanipulasi.
Afrazier
2
Jika menurut Anda spasi buruk, coba berurusan dengan file dengan baris baru ( '\n') dalam namanya. (Sistem mirip Unix sebenarnya memungkinkan ini; Windows umumnya, atau setidaknya menyulitkan.)
Keith Thompson
31

Selain jawaban lain tentang baris perintah dan kebiasaan lama, ada juga banyak protokol jaringan yang memerlukan perhatian khusus ketika berhadapan dengan nama file yang mengandung spasi.

(Jika Anda pernah mencoba mengunduh "Daftar Produk.pdf" dari sebuah situs web, dan berakhir dengan file yang disebut "Produk", Anda digigit oleh ini, karena programmer di ujung lain tidak tahu atau tidak bisa cari tahu aturan mengutip untuk header http-Content Disposition.)

Stobor
sumber
11
+1. HTTP sebagai permulaan. Spasi dalam URL (untuk protokol apa pun, tidak hanya HTTP) harus diloloskan ke% 20 atau +. Kebingungan dapat muncul ketika mereka tidak dikodekan sebagaimana mestinya. Untuk halaman web ada alasan visual untuk menghindari spasi dan garis bawah ("_") yang biasa digunakan untuk menggantinya - keduanya mungkin terlihat sama di tautan yang digarisbawahi, sehingga seseorang menyalin tautan secara manual atau membacanya kepada seseorang mungkin mendapatkan itu salah.
David Spillett
5
Salah satu hal yang paling menyebalkan tentang spasi yang perlu dikodekan dalam URL adalah kecenderungan perangkat lunak tertentu berakhir dengan menjaga ruang yang dikodekan ...
SamB
Apakah ini nyata? Pada 2018 ini terjadi?
Chris Calo
@ChrisCalo Anda mungkin memperhatikan bahwa jawaban ini diberikan pada tahun 2009, bukan 2018. Tapi, ya, ini masih terjadi pada tahun 2018. Mungkin lebih jarang, sekarang sebagian besar pengembang pemula menggunakan kerangka kerja untuk membangun situs web daripada melakukan semuanya dari awal, tetapi masih sebuah isu.
Stobor
28

Banyak alasannya historis. Itu tidak berarti bahwa mereka tidak masuk akal hari ini.

Masalah dalam Portabilitas

Saat memberi nama file, Anda mungkin juga harus mempertimbangkan bagaimana sistem (file) lain akan memperlakukan nama file itu. Karakter dalam nama file mungkin baik untuk sistem Anda, tetapi mungkin masalah untuk sistem lain.

Jadi, selama ada kemungkinan sekecil apa pun Anda mungkin ingin dapat mengakses file dengan mudah dari sistem yang lebih lama, Anda hanya akan memilih karakter yang aman . Ini mungkin termasuk mem-boot ke sistem pemulihan lama yang Anda simpan atau takut versi Windows yang baru-baru ini entah bagaimana masih berbasis pada MS-DOS.

Panjangnya

Sistem file dapat membatasi panjang file. Ini bahkan lebih serius selama hari-hari ketika MS-DOS terbatas pada 8,3 nama file . Jadi, tanpa spasi memungkinkan Anda untuk memasukkan karakter yang lebih bermakna ke dalam nama.

Beberapa sistem file lain juga menetapkan batasan ketat pada panjang nama file mereka. Wikipedia memiliki tabel dalam artikel tentang perbandingan sistem file untuk mereka yang menginginkan detailnya.

Karakter Cadangan

MS-DOS juga mendefinisikan karakter spasi sebagai karakter yang dilindungi. Ini disebabkan oleh fakta bahwa karakter spasi digunakan untuk mengisi dalam FAT . Selain itu, MS-DOS tidak menyediakan sistem pelarian di shell.

Interpretasi Baris Perintah

Sebagian besar baris perintah yang saya ketahui menggunakan karakter spasi sebagai pembatas parameter . Ketika mengabaikan untuk melarikan diri nama file dengan benar, itu dapat memiliki konsekuensi yang mengerikan karena bagian dari nama file dapat diartikan sebagai parameter untuk aplikasi yang ingin Anda panggil.

Pertimbangkan perbedaannya

rm foo bar

dan

rm "foo bar"

Artikel WikiPedia yang ditautkan di atas bahkan menunjukkan ambiguitas yang diperkenalkan karena tidak ada perintah yang benar:

Ambiguitas dapat dicegah dengan melarang spasi yang disematkan dalam nama file dan direktori di tempat pertama (misalnya, dengan menggantikannya dengan garis bawah '_'), atau, jika didukung oleh penerjemah baris perintah dan program yang menggunakan parameter ini sebagai argumen, dengan melampirkan nama dengan spasi yang disisipkan di antara karakter kutipan atau menggunakan karakter escape sebelum spasi, biasanya backslash ('\'). Sebagai contoh

Long path/Long program name Parameter one Parameter two ...

ambigu (apakah "nama program" bagian dari nama program, atau dua parameter?); namun

Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...

dan Panjang \ path / Panjang \ program \ nama Parameter \ satu Parameter \ dua ...

tidak ambigu.

Uniform Resource Locators (URL)

Saat mencoba menggambarkan lokasi file, menggunakan URL, spasi harus diloloskan.

Karakter dapat tidak aman karena sejumlah alasan. Karakter spasi tidak aman karena ruang yang signifikan dapat menghilang dan ruang yang tidak signifikan dapat diperkenalkan ketika URL ditranskripsikan atau dikeset atau dikenai perlakuan program pengolah kata.

Sumber: RFC1738

Dengan demikian, ruang harus diganti dengan %20gantinya. Ini membuat nama file bagian dari URL menjadi kurang mudah dibaca dan, karenanya, membuat orang menghindarinya.

Der Hochstapler
sumber
25

Spasi dikodekan atau dikonversi ke %20dalam nama file di web, yang mungkin membuatnya lebih sulit untuk mengelola aset situs.

Memiliki Image 1.pngdan Image%201.pngmembingungkan. Lebih mudah digunakan Image001.pngsebagai gantinya.

Ini benar-benar berada di bawah kategori yang sama dengan urutan melarikan diri untuk baris perintah.

pengguna7012
sumber
5

Kadang-kadang, spasi dapat menghadirkan masalah ketika berhadapan pada baris perintah, atau ketika menggunakan OS yang lebih lama, atau ketika menulis program yang akan dikompilasi pada OS yang berbeda, atau ketika ... ada banyak alasan yang dapat menimbulkan masalah, dan saya tidak Saya benar-benar merasa kesulitan menulis file seperti: file-without-blanks.txt atau file_without_blanks.txt . Saya lebih suka dask karena garis bawah kadang-kadang bisa menjadi tidak terlihat ketika berhadapan dengan, misalnya, font yang digarisbawahi.

Tapi sebagian besar, itu adalah masalah kebiasaan sejak usia lanjut. Yang saya tidak merasa ada cukup pro alasan untuk meninggalkan.


Catatan tambahan, mungkin tidak terkait, tetapi tetap saya taruh di sini. Orang yang memberi nama file mereka dengan spasi biasanya tidak terlalu memikirkannya; orang-orang yang tidak sering tahu sedikit mengapa itu baik untuk menghindari mereka dalam nama file.
Dan, kita semua bisa sepakat, tidak ada yang lebih buruk daripada file yang bernama "Dear Sir atau Madam, saya menulis surat ini untuk memberi tahu Anda tentang yo.doc".

Bukan hanya spasi - panjang file juga diperhitungkan untuk sesuatu, dan IMHO, seharusnya tidak lebih dari, katakanlah, 30 karakter. Untuk nama file yang panjang dengan spasi di dalam juga merupakan berkah saat merekam CD, DVD, dan semacamnya yang perlu dibaca di bawah OS lama, dan di antara plaform Win dan * nix.

Benteng
sumber
2
Pengguna Word yang malas ...
SamB