บางครั้งรู้จักไฟล์ที่ผิดพลาดน้อยกว่าเป็นเลขฐานสองและพยายามแสดง 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โดยไม่ต้อง less
rerunning คุณสามารถเพิ่มตัวเลือกเหล่านี้ให้กับLESS
ตัวแปรสภาพแวดล้อมเพื่อทำให้การตั้งค่าเป็นแบบถาวร (เช่นโดยการแก้ไขไฟล์โปรไฟล์เชลล์) หากเทอร์มินัลของคุณสามารถแสดงสีผมขอแนะนำให้เพิ่ม-R
ในLESS
การตั้งค่าของคุณ คุณควรตรวจสอบให้แน่ใจว่าเทอร์มินัลของคุณได้รับการกำหนดค่าให้ใช้การเข้ารหัสอักขระเดียวกับไฟล์ข้อความของคุณ
cat somefile
แสดงเป็น ASCII แต่less somefile
บอกว่าอาจเป็นแบบไบนารีและแสดงเช่นนั้นecho $LESSOPEN
ว่างเปล่าและless -L
ไม่ช่วย