เหตุผลมากมายเป็นเรื่องเกี่ยวกับประวัติศาสตร์ ไม่ได้หมายความว่าวันนี้พวกเขาไม่เข้าท่า
ปัญหาในการพกพา
เมื่อตั้งชื่อไฟล์คุณอาจต้องพิจารณาว่าระบบอื่น ๆ (ไฟล์) จะจัดการกับชื่อไฟล์นั้นอย่างไร อักขระในชื่อไฟล์อาจใช้ได้กับระบบของคุณ แต่อาจเป็นปัญหาสำหรับระบบอื่น
ดังนั้นตราบใดที่มีความเป็นไปได้เพียงเล็กน้อยที่คุณอาจต้องการเข้าถึงไฟล์ได้อย่างง่ายดายจากระบบเก่าคุณจะต้องเลือกตัวละครที่ปลอดภัยเท่านั้น ซึ่งอาจรวมถึงการบูทในระบบกู้คืนเก่าที่คุณเก็บไว้หรือกลัวว่า Windows รุ่นล่าสุดจะยังคงใช้ MS-DOS อยู่
ความยาว
ระบบไฟล์อาจจำกัดความยาวของไฟล์ นี้ก็ยิ่งรุนแรงมากขึ้นในช่วงวันที่เมื่อ MS-DOS ถูก จำกัด8.3 ชื่อไฟล์ ดังนั้นการเว้นช่องว่างทำให้คุณสามารถใส่อักขระที่มีความหมายมากขึ้นในชื่อ
ระบบไฟล์อื่น ๆ หลายแห่งยังกำหนดข้อ จำกัด ที่เข้มงวดเกี่ยวกับความยาวชื่อไฟล์ Wikipedia มีตารางในบทความเกี่ยวกับการเปรียบเทียบระบบไฟล์สำหรับผู้ที่ต้องการรายละเอียด
อักขระที่จองไว้
MS-DOS ยังกำหนดอักขระช่องว่างเป็นอักขระที่สงวนไว้ เพราะนี่คือความจริงที่ว่าตัวละครของพื้นที่ที่ใช้สำหรับการขยายไขมัน นอกจากนี้ MS-DOS ไม่ได้จัดเตรียมระบบการหลบหนีไว้ในเชลล์
การตีความบรรทัดคำสั่ง
ส่วนใหญ่คำสั่งสายฉันรู้ใช้อักขระช่องว่างเป็นตัวคั่นพารามิเตอร์ เมื่อละเลยการหลีกเลี่ยงชื่อไฟล์อย่างถูกต้องมันอาจมีผลกระทบร้ายแรงเนื่องจากบางส่วนของชื่อไฟล์สามารถตีความได้ว่าเป็นพารามิเตอร์ของแอปพลิเคชันที่คุณต้องการโทร
พิจารณาความแตกต่างระหว่าง
rm foo bar
และ
rm "foo bar"
บทความ WikiPedia ที่ลิงก์ด้านบนยังชี้ให้เห็นถึงความกำกวมที่แนะนำโดยการขาดหายไปเพื่อหลีกเลี่ยงคำสั่งอย่างถูกต้อง:
ความกำกวมสามารถป้องกันได้โดยการห้ามเว้นวรรคที่ฝังตัวในชื่อไฟล์และไดเรกทอรีในสถานที่แรก (ตัวอย่างเช่นโดยการแทนที่ด้วยขีดล่าง '_') หรือหากได้รับการสนับสนุนจากล่ามบรรทัดคำสั่งและโปรแกรมที่รับพารามิเตอร์เหล่านี้ อาร์กิวเมนต์โดยใส่ชื่อด้วยช่องว่างที่ฝังอยู่ระหว่างอักขระเครื่องหมายคำพูดหรือใช้อักขระเลี่ยงหน้าช่องว่างมักเป็นเครื่องหมายแบ็กสแลช ('\') ตัวอย่างเช่น
Long path/Long program name Parameter one Parameter two ...
คลุมเครือ (คือ "ชื่อโปรแกรม" เป็นส่วนหนึ่งของชื่อโปรแกรมหรือพารามิเตอร์สองตัว?); อย่างไรก็ตาม
Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...
และ Long \ path / Long \ program \ name พารามิเตอร์ \ หนึ่งพารามิเตอร์ \ สอง ...
ไม่คลุมเครือ
Uniform Resource Locators (URL)
เมื่อพยายามอธิบายตำแหน่งของไฟล์โดยใช้ URL จะต้องเว้นช่องว่าง
ตัวละครอาจไม่ปลอดภัยด้วยเหตุผลหลายประการ อักขระช่องว่างไม่ปลอดภัยเนื่องจากช่องว่างที่สำคัญอาจหายไปและอาจมีช่องว่างที่ไม่สำคัญเมื่อมีการคัดลอก URL หรือเรียงพิมพ์หรืออยู่ภายใต้การดูแลของโปรแกรมประมวลผลคำ
ที่มา: RFC1738
ดังนั้นพื้นที่จะต้องถูกแทนที่ด้วย%20
แทน สิ่งนี้ทำให้ส่วนชื่อไฟล์ของ URL อ่านได้น้อยลงและทำให้ผู้คนหลีกเลี่ยงได้ตั้งแต่แรก