ทำไม dir *. * ทำรายการไฟล์และโฟลเดอร์ทั้งหมด?
บางครั้งคุณอาจพบผลลัพธ์ที่ไม่คาดคิดเมื่อเรียกใช้คำสั่งดังนั้นการเรียนรู้ว่า "ทำไม" ที่อยู่เบื้องหลังผลลัพธ์นั้นน่าสนใจมาก เมื่อคำนึงถึงเรื่องนี้แล้วคำถาม & คำตอบ SuperUser ของวันนี้มีคำตอบสำหรับคำถามของผู้อ่านที่อยากรู้อยากเห็น.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
คำถาม
ผู้อ่าน SuperUser Luu Vinh Phuc ต้องการทราบว่าทำไม dir *. * แสดงรายการไฟล์และโฟลเดอร์ทั้งหมด:
เมื่อฉันรันคำสั่ง dir *. * มันจะสร้างผลลัพธ์ที่ไม่คาดคิด แม้แต่ไฟล์และโฟลเดอร์ที่ไม่มีจุดใด ๆ ในชื่อก็แสดงรายการ ตัวอย่างเช่น:
ทำไมถึงเป็นอย่างนั้น? มีวิธีใดบ้างที่จะแสดงเฉพาะไฟล์ที่มีจุด?
เหตุใด dir *. * จึงแสดงรายการไฟล์และโฟลเดอร์ทั้งหมด?
คำตอบ
ผู้สนับสนุน SuperUser Fleet Command มีคำตอบสำหรับเรา:
คำสั่ง DIR มาจากเวลาเมื่อ:
- ไม่อนุญาตให้ใช้เครื่องหมายมหัพภาค (.) เป็นอักขระในชื่อไฟล์หรือโฟลเดอร์
- ชื่อไฟล์และโฟลเดอร์ถูก จำกัด ไว้ที่ 8 ตัวอักษรสำหรับชื่อและ 3 ตัวอักษรสำหรับส่วนขยาย
ดังนั้นตามมาตรฐานนั้น *. * จึงมีความหมายว่าชื่อและนามสกุลใด ๆ มันไม่ได้หมายความว่าสายอักขระที่ประกอบด้วย“.” ซึ่งอาจมีหรือไม่มีอักขระก่อนหรือหลัง“.”.
นโยบายของ Microsoft รักษาความเข้ากันได้แบบย้อนหลังดังนั้นการตีความของ *. * จะยังคงอยู่ แต่ใน Windows PowerShell, *. * หมายถึงสตริงที่มี“.” ซึ่งอาจมีหรือไม่มีอักขระอยู่ก่อนหรือหลัง“.”.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.