บางครั้งรู้จักไฟล์ที่ผิดพลาดน้อยกว่าเป็นเลขฐานสองและพยายามแสดง hexdump บน LHS (โดยปกติแล้วไฟล์ที่มีอักขระที่ไม่ใช่ตัวอักษรและตัวเลข แต่ยังคงมีอักขระ ASCII ที่พิมพ์ได้) จะบังคับให้จดจำเป็นข้อความได้อย่างไร?
บางครั้งรู้จักไฟล์ที่ผิดพลาดน้อยกว่าเป็นเลขฐานสองและพยายามแสดง hexdump บน LHS (โดยปกติแล้วไฟล์ที่มีอักขระที่ไม่ใช่ตัวอักษรและตัวเลข แต่ยังคงมีอักขระ ASCII ที่พิมพ์ได้) จะบังคับให้จดจำเป็นข้อความได้อย่างไร?
คำตอบ:
ฉันคิดว่าคุณมี (หรือการกระจายของคุณมีบริการ) ตัวกรองการตั้งค่าสำหรับLESSOPEN lessลองใช้วิธีต่อไปนี้เพื่อบอกlessให้ไม่ใช้ตัวกรอง:
less -L my_binary_file
echo $LESSOPENสำหรับการสำรวจต่อไปยังพยายาม มันอาจมีชื่อของเชลล์สคริปต์ ( /usr/bin/lesspipeสำหรับฉัน) ซึ่งคุณสามารถอ่านเพื่อดูว่ามีตัวกรองประเภทใด นอกจากนี้ยังพยายามman lessและอ่านอินพุต Preprocessorส่วน
สำหรับกรณีที่LESSOPENไม่มีปัญหา ลองใช้lessตัวเลือกต่อไปนี้:
-fหรือ--force: นอกเหนือจากการอนุญาตให้เปิดไฟล์ที่ไม่ปกติมัน "ยังระงับข้อความเตือนเมื่อเปิดไฟล์ไบนารี"-rหรือ--raw-control-chars: "ทำให้อักขระควบคุมแบบดิบปรากฏขึ้นค่าเริ่มต้นคือแสดงอักขระควบคุมโดยใช้เครื่องหมายรูปหมวกตัวอย่างเช่นตัวควบคุม A (แปดฐาน 001) แสดงเป็น^Aคำเตือน: เมื่อใช้-rตัวเลือกจะไม่สามารถติดตามได้น้อย ของลักษณะที่ปรากฏจริงของหน้าจอ (เนื่องจากสิ่งนี้ขึ้นอยู่กับวิธีที่หน้าจอตอบสนองต่ออักขระควบคุมแต่ละประเภท) ดังนั้นปัญหาการแสดงผลที่หลากหลายอาจส่งผลให้เกิดปัญหาเช่นเส้นยาวถูกแยกในตำแหน่งที่ไม่ถูกต้อง-Rหรือ--RAW-CONTROL-CHARS: รูปแบบที่อ่อนแอ-rกว่าด้านบนมีเพียงเอาท์พุต "ANSI" สี "เท่านั้นที่จะถูกส่งออกในรูปแบบ" ดิบ " "ไม่เหมือน -r ลักษณะที่ปรากฏบนหน้าจอจะได้รับการบำรุงรักษาอย่างถูกต้องในกรณีส่วนใหญ่" สิ่งนี้มีประโยชน์หากคุณกำลังดูไฟล์บันทึกที่ใช้ลำดับการควบคุมสี ANSIคุณสามารถทดลองโดยการกดปุ่ม-ตามด้วยrโดยไม่ต้อง lessrerunning คุณสามารถเพิ่มตัวเลือกเหล่านี้ให้กับLESSตัวแปรสภาพแวดล้อมเพื่อทำให้การตั้งค่าเป็นแบบถาวร (เช่นโดยการแก้ไขไฟล์โปรไฟล์เชลล์) หากเทอร์มินัลของคุณสามารถแสดงสีผมขอแนะนำให้เพิ่ม-RในLESSการตั้งค่าของคุณ คุณควรตรวจสอบให้แน่ใจว่าเทอร์มินัลของคุณได้รับการกำหนดค่าให้ใช้การเข้ารหัสอักขระเดียวกับไฟล์ข้อความของคุณ
cat somefileแสดงเป็น ASCII แต่less somefileบอกว่าอาจเป็นแบบไบนารีและแสดงเช่นนั้นecho $LESSOPENว่างเปล่าและless -Lไม่ช่วย