เหตุใด Linux จึงสามารถแสดงชื่อไฟล์ที่มีอักขระ '/'


32

รูปภาพต่อไปนี้ถูกจัดวางในสภาพแวดล้อม Linux จริง

เอาท์พุท ls แสดงตัวละครที่คล้ายกับไปข้างหน้าทับ (/) ในชื่อไฟล์

เหตุใด Linux จึงสามารถแสดงชื่อไฟล์ที่มีอักขระ '/'


7
ดังนั้นมันคือตัวละคร? โปรดอัปเดตคำถามของคุณด้วยhexdumpผลลัพธ์
cjm

1
แม้ว่า APIs ทั้งหมดจะบังคับใช้ข้อ จำกัด อักขระของชื่อไฟล์ในการเขียน แต่ก็เป็นไปได้ (แต่เทอะทะ) เพื่อแก้ไขชื่อไฟล์โดยตรงในอิมเมจของดิสก์ (ผมไม่ทราบว่าวันนี้ filesystems ปกติตรวจสอบชื่อไฟล์ในการอ่าน.)
อู Schwarz

@ cjm, ฉันได้คืนสแน็ปช็อตของ vmware แล้ว
xmllmx

5
@xmllmx: นั่นเป็นหนึ่งในเหตุผลที่ทำไมแทนที่จะเป็น (หรือเพิ่มเติมจาก) รูปภาพการคัดลอกและวางผลลัพธ์เป็นข้อความ
TJ Crowder

2
Ext * เท่านั้นห้ามสองตัวอักษรจากชื่อไฟล์: และ\0 /นี่เป็นข้อ จำกัด ระดับเคอร์เนลและ FS แม้ว่าคุณจะจัดการกับมันได้โดยการลอกเลียนไปรอบ ๆ ด้วยรายการไดเรกทอรีด้วยตัวเอง แต่ฉันก็ประมาณ 82% ว่า Linux บางตัวจะไม่สามารถนำทางไปยังไฟล์เพื่อเปิด
cHao

คำตอบ:


53

มันไม่ใช่/ตัวละคร ( U + 002F ); มันเป็นตัวละคร Unicode ที่ดูคล้ายกัน

ลอง

ls | hexdump -C

เพื่อดูว่ามันคืออะไร

ความเป็นไปได้บางอย่างคือFRACTION SLASH (U + 2044) , DIVISION SLASH (U + 2215) , MATHEMATICAL RISING DIAGONAL (U + 27CB)และตัวละครโซลิดัสรวมกันU + 0337และU + 0338แต่ไม่มีทางที่จะบอกได้ว่า ภาพหน้าจอของคุณ


2
เยี่ยม ... ขอบคุณls | hexdump -Cดูเหมือนว่าจะมีประโยชน์ในหลายกรณี
beginer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.