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 %20
gantinya. Ini membuat nama file bagian dari URL menjadi kurang mudah dibaca dan, karenanya, membuat orang menghindarinya.