สรุป:
- Windows: ทุกอย่างยกเว้นอักขระควบคุมของ ASCII และ
\/:*?"<>|
- Linux, OS-X: อะไรก็ได้ยกเว้น null หรือ
/
ในทุกแพลตฟอร์มคุณควรหลีกเลี่ยงอักขระที่ไม่สามารถพิมพ์ได้เช่น ASCII control-characters
ของ windows
ใน Windows Windows Explorer ไม่อนุญาตให้ใช้อักขระควบคุมหรือ\/:*?"<>|
คุณสามารถใช้ช่องว่างได้ หากคุณใช้ช่องว่างคุณมักจะต้องอ้างชื่อไฟล์เมื่อใช้จากบรรทัดคำสั่ง (แต่แอป GUI ไม่ได้รับผลกระทบเท่าที่ฉันรู้) ระบบไฟล์ของ Windows เช่น NTFS เห็นได้ชัดว่าการเข้ารหัสด้วยชื่อไฟล์ แต่ UTF-16 เป็นมาตรฐาน
บางส่วนของ Windows คำนึงถึงขนาดตัวพิมพ์และส่วนอื่น ๆ ไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก มันง่ายที่จะสร้างชื่อไฟล์ที่แตกต่างเช่น "Ab" และ "ab" บนระบบไฟล์ Windows NTFS ชื่อเหล่านี้อ้างถึงไฟล์แยกต่างหากซึ่งมีเนื้อหาแยกต่างหากที่แตกต่างกัน อย่างไรก็ตามแม้ว่าของ Windows พร้อมรับคำสั่งอย่างมีความสุขจะมีรายการทั้งสองไฟล์โดยใช้คุณจะไม่สามารถเข้าถึงได้อย่างง่ายดายหรือจัดการหนึ่งของพวกเขาโดยใช้คำสั่งเช่นdir
type
ดูด้านล่าง
Linux, OS-X
ใน Linux และ OS-X /
ของชุด ASCII ที่พิมพ์ได้นั้นเป็นสิ่งต้องห้ามฉันเชื่อว่า อักขระบางตัว (เชลล์เมตาอักขระเช่น*?!
) จะทำให้เกิดปัญหาในบรรทัดคำสั่งและจะต้องมีชื่อไฟล์ที่จะยกมาหรือหนีอย่างเหมาะสม
ระบบไฟล์ Linux เช่น ext2, ext3 เป็นตัวละครที่ไม่เชื่อเรื่องพระเจ้า (ฉันคิดว่าพวกเขาปฏิบัติต่อมันมากขึ้นหรือน้อยลงเป็นสตรีมไบต์ - เป็นโมฆะเท่านั้นและ/
ไม่ได้รับอนุญาต) ซึ่งหมายความว่าคุณสามารถจัดเก็บชื่อไฟล์ในการเข้ารหัส UTF-8 ฉันเชื่อว่ามันขึ้นอยู่กับเชลล์หรือแอปพลิเคชั่นอื่น ๆ ที่จะรู้ว่าการเข้ารหัสเพื่อใช้ในการแปลงชื่อไฟล์สำหรับการแสดงหรือการประมวลผลอย่างเหมาะสม
ข้อสรุป
ดังนั้นคุณอาจใช้สิ่งที่ปลอดภัยได้✣
(ถ้าพิมพ์ไม่ยาก)
ความไวตัวพิมพ์เล็ก - ใหญ่ (in) ใน Windows
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
โปรดทราบว่าเราไม่สามารถพิมพ์เนื้อหาของไฟล์ที่สองtype
คำสั่งWindows เพิ่งส่งคืนเนื้อหาของ Ab แทน ไฟล์ที่สามจะแตกต่างจาก aB บน Linux เช่นกัน
(Windows 10 NTFS)