“ การทดสอบเวทมนต์” หมายถึงอะไรสำหรับคำสั่งไฟล์?


20

ฉันกำลังอ่านเกี่ยวกับfileคำสั่งและฉันเจอสิ่งที่ฉันไม่ค่อยเข้าใจ:

ไฟล์ถูกออกแบบมาเพื่อกำหนดประเภทของไฟล์ที่ถูกสอบถาม .... ไฟล์ทำสิ่งนี้ได้สำเร็จโดยทำการทดสอบสามชุดกับไฟล์ดังกล่าว:

  • การทดสอบระบบไฟล์
  • การทดสอบเวทมนตร์
  • การทดสอบภาษา

อะไรคือความมหัศจรรย์ทดสอบ?

คำตอบ:


15

นั่นหมายถึง "วิเศษไบต์" ซึ่งหลายรูปแบบไฟล์มีจุดเริ่มต้นของไฟล์ที่แสดงประเภทของไฟล์นี้

เช่นถ้าไฟล์เริ่มต้นด้วย#!ก็ถือว่าเป็นสคริปต์


28

"magic" ที่นี่หมายถึง " magic numbers ": ค่าพิเศษที่อยู่ในสถานที่ที่รู้จักในไฟล์ที่ระบุประเภทของมัน fileคำสั่งมีฐานข้อมูลของตัวเลขเหล่านี้และสิ่งที่พวกเขาพิมพ์ตรงตามลักษณะที่ ไลบรารีที่ไปกับฐานข้อมูลนั้นเรียกว่าlibmagicและคุณสามารถเข้าถึงได้จากโปรแกรมของคุณเอง

พวกเขาไม่จำเป็นต้อง "ตัวเลข" อย่างที่เราคิด ตัวอย่างเช่นไฟล์รูปภาพ PNG เริ่มต้นด้วย "\ x89PNG \ r \ n \ x1a \ n" คลาส Java เริ่มต้นด้วยสี่ไบต์ (เป็นเลขฐานสิบหก) CA FE BA BE และไฟล์ HTML มี "<html" ที่ใดที่หนึ่ง ใกล้จุดเริ่มต้น มันเป็นเพียงข้อมูลลำดับเล็ก ๆ ที่รู้กันว่าอยู่ในไฟล์ประเภทนั้นมักจะใกล้เคียงกับจุดเริ่มต้นมาก

เมื่อคนกำหนดรูปแบบไฟล์พวกเขามักจะรวมหนึ่งในนั้นโดยเจตนาหรือเป็นส่วนหนึ่งของการจัดรูปแบบให้เข้ากัน fileสามารถใช้พวกเขาในภายหลัง นอกจากนี้ยังมีวิธีอื่น ๆ ในการดูเนื้อหาของไฟล์เพื่อเดาว่ามันคืออะไร ("การทดสอบภาษา")


6
โปรดทราบว่าเดิม "หมายเลขมายากล" เป็นสองไบต์แรกของไฟล์ที่ปฏิบัติการได้ซึ่งใช้โดยเคอร์เนลเพื่อโหลดในวิธีที่เหมาะสม #!เป็นจริงตัวอย่างนี้เนื่องจากเคอร์เนลเองเมื่อเห็นไบต์เหล่านั้นควรจะเรียกใช้คำสั่งที่ตามมา
IMSoP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.