เดิมพันที่ปลอดภัยที่สุดคือการอ้างถึงรายการ wikipedia สำหรับชุดอักขระที่อนุญาตสำหรับระบบปฏิบัติการใด ๆ มันสามารถพบได้จากที่นี่
ตัวอย่างเช่นสำหรับระบบที่ใช้ระบบปฏิบัติการยูนิกซ์ส่วนใหญ่ชุดอักขระที่อนุญาตคือชุด 8 บิตและอักขระที่สงวนไว้คืออักขระ null (NUL, '\0'
) อย่างไรก็ตามการใช้อักขระพิเศษในชื่อไฟล์นั้นไม่ใช่วิธีปฏิบัติที่ดีเนื่องจากมีปัญหาขณะถอดออก
ตัวอย่างเช่นฉันสามารถมีชื่อไฟล์เป็น-ramesh.txt
และฉันพยายามลบมันดังต่อไปนี้
rm -ramesh.txt
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
rm "-ramesh.txt"
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
ฉันต้องลบไฟล์เป็น
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
รายละเอียดเพิ่มเติมสามารถพบได้จากคำตอบนี้เช่นกัน
ใน Linux และ OS-X /
ของชุด ASCII ที่พิมพ์ได้นั้นเป็นสิ่งต้องห้ามฉันเชื่อว่า อักขระบางตัว (เชลล์เมตาอักขระเช่น*?!
) จะทำให้เกิดปัญหาในบรรทัดคำสั่งและจะต้องใช้ชื่อไฟล์ที่จะยกมาหรือหนีอย่างเหมาะสม
ระบบไฟล์ Linux เช่น ext2, ext3 เป็นตัวละครที่ไม่เชื่อเรื่องพระเจ้า (ฉันคิดว่าพวกเขาปฏิบัติต่อมันมากขึ้นหรือน้อยลงเป็นสตรีมไบต์ - เป็นโมฆะเท่านั้นและ/
ไม่ได้รับอนุญาต) ซึ่งหมายความว่าคุณสามารถจัดเก็บชื่อไฟล์ในการเข้ารหัส UTF-8 ฉันเชื่อว่ามันขึ้นอยู่กับเชลล์หรือแอปพลิเคชั่นอื่น ๆ ที่จะรู้ว่าการเข้ารหัสเพื่อใช้ในการแปลงชื่อไฟล์สำหรับการแสดงหรือการประมวลผลอย่างเหมาะสม
เพื่อสรุปปัญหาไม่ได้อยู่ในการใช้อักขระพิเศษสำหรับชื่อไฟล์ แต่ในวิธีการจัดการพวกเขา