ฉันสามารถบังคับให้ 'man' ทำการจับคู่ตัวพิมพ์เล็กและตัวพิมพ์เล็กได้หรือไม่


10

เมื่อฉันค้นหาหน้าคนการค้นหาจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่เกี่ยวข้องกับตัวอักษรตัวพิมพ์ใหญ่เท่านั้น เช่นxจะตรงxและXในขณะที่เพียงการแข่งขันX xนี่คือman-dbรุ่นของมนุษย์ที่ใช้กับระบบที่ได้รับจาก fedora โดยค่าเริ่มต้นและมีให้สำหรับผู้อื่น กล่าวว่าเพจเจอร์เริ่มต้นคือ man man ไม่ได้ถูกกำหนดในสภาพแวดล้อมฉันเป็นเพียงแค่และฉันไม่มีนามแฝงสำหรับน้อยless -s$LESS$PAGERless

นี่ไม่ใช่พฤติกรรมเมื่อฉันเรียกใช้lessด้วยตัวเอง

อย่างไรก็ตามมีการบังคับให้ตัวพิมพ์เล็กxให้ตรงกับตัวพิมพ์เล็กxเมื่อใช้manหรือไม่


1
ค่าเริ่มต้นคือความไวตัวพิมพ์เล็กและใหญ่ สิ่งที่คุณอธิบายเสียงเหมือนของตัวแปรสภาพแวดล้อมมีLESS -i
จัดการ

1
สิ่งที่รุ่นของlessคุณมี? คุณมีนามแฝงที่ตั้งไว้lessหรือไม่? LESSOPEN env vars ตั้งค่า LESS หรือ LESS หรือไม่? ตามค่าเริ่มต้นจะlessค้นหาxเฉพาะการจับคู่xไม่ใช่X
bsd

เราไม่มี Q นี้หรือยัง? ฉันคิดว่า Hauke ​​ถามฉันจะมองหามัน .... (slm กลับมาก่อน 5 นาทีความคิดเห็นจะหมดลง ... ) อันนี้ไม่ใช่รายการซ้ำ แต่ดูเหมือนว่าคุณกำลังถามใช่ไหม unix.stackexchange.com/questions/116395/…
slm

@slm นี่เป็นปฏิกิริยาแรกของฉันด้วย แต่เมื่อเจ้าของคำถามมีส่วนร่วมในคำถามนั้นฉันคิดว่าเขารู้เกี่ยวกับมัน
จัดการ

@ manatwork echo $LESS= ไม่มีอะไร หมายเหตุมันไม่ใช่ case insensitve - แต่มันบังคับใช้ตัวพิมพ์ใหญ่ของความไว WRT เท่านั้น @bdowning alias | grep less= ไม่มีอะไร เพิ่งสังเกตเห็นว่ามันใช้ได้เฉพาะผ่านman(มัน mandb, btw) อย่างไรก็ตาม ผมแน่ใจว่าผมได้อ่านเรื่องนี้มาก่อนที่ไหนสักแห่ง ...
Goldilocks

คำตอบ:


3

ผู้ชายกำลังโทรหา Less การควบคุมเพียงระดับคนเดียวคือการเลือกตัวเลือกที่จะโทรหาด้วย Less

การค้นหาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่นั้นถูกควบคุมโดยสองตัวเลือก

  • หาก-Iมีผลการค้นหาแล้วมีกรณีตาย: ทั้งaหรือAสามารถนำมาใช้เพื่อให้ตรงกับทั้งสองและaA
  • หาก-iมีผล แต่ไม่ใช่-Iการค้นหาจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่เฉพาะในกรณีที่รูปแบบไม่มีตัวอักษรตัวพิมพ์ใหญ่

หากคุณ-Iเลือกตัวเลือกเริ่มต้นสำหรับ Less การค้นหาทั้งหมดจะไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่แม้ใน man pages

Man-db ส่งผ่านตัวเลือกพิเศษไปยังเพจเจอร์ผ่านLESSตัวแปรสภาพแวดล้อมซึ่งตีความน้อยลงในลักษณะเดียวกับตัวเลือกบรรทัดคำสั่ง -iการตั้งค่าการกำหนดค่าตายตัวที่รวบรวมเวลาและเริ่มต้นด้วย (ค่า"-ix8RmPm%s$PM%s$"เป็นของ Man-db 2.6.2 P…$ส่วนคือสตริงพร้อมท์)

หากคุณไม่ต้องการให้การค้นหาใน man man เป็นแบบตรงตามตัวพิมพ์ใหญ่ - เล็กหรือถ้าคุณต้องการให้มันเล็ก - เล็กต้องพิมพ์เล็ก - ใหญ่ไม่มีวิธีกำหนดค่าใน man-db เอง คุณสามารถสร้างนามแฝงสำหรับmanหรือสคริปต์ตัวตัดคำที่จัดการกับLESSตัวแปรสภาพแวดล้อมเนื่องจาก Man-db เป็นการเพิ่มเนื้อหาให้เป็นค่าปัจจุบันถ้ามี:

alias man='LESS="$LESS -I" man'

หากต้องการปิด-iตัวเลือกและทำการค้นหาโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยค่าเริ่มต้นใน man page:

alias man='LESS="$LESS -+i" man'

นอกจากนี้คุณยังสามารถฮาร์ดโค้ดค่าที่แตกต่างกันLESSโดยการตั้งค่าMANLESSตัวแปรสภาพแวดล้อม แต่ถ้าคุณทำเช่นนั้นmanเพียงแค่ตั้งLESSค่าเป็นMANLESSคุณจะสูญเสียบรรทัดหัวเรื่องที่กำหนดเอง (“ หน้าคู่มือfoo(42)”) และสารพัดอื่น ๆ โปรดรวม-Rการจัดรูปแบบตัวหนาและขีดเส้นใต้ไว้ด้วย)


1

นี่คือวิธีที่less's -i(สวิตช์บรรทัดคำสั่ง) 'กรณีตาย' ผลงานโหมด (กล่าวคือมันก็ยังคงมีความละเอียดอ่อนสำหรับกรณีบน) เมื่อ Gilles ชี้ให้เห็นการใช้สิ่งนี้จะถูกรวบรวมเป็น man-db

นอกจากวิธีที่ระบุไว้ใน Gilles ตอบ WRT การตั้งค่านามแฝง+-iหรือกำหนดเองMANLESSคุณสามารถสลับการจับคู่กรณีที่เข้มงวดเมื่อหน้าคนเปิดขึ้นด้วย-i(ซึ่งจะเปิดและปิดสวิตช์); คุณจะเห็นน้อย "กรณีที่มีความสำคัญในการค้นหา" ข้อความและตอนนี้xเพียงตรงxและเพียงแมตช์XX

Man-db's manมี-Iสวิตช์ แต่สิ่งนี้ใช้กับการค้นหาหน้า man - เช่นโดยค่าเริ่มต้นman BASHจะให้ bash manual page ในขณะที่man -I BASHไม่มี


0

"มีการบังคับตัวพิมพ์เล็กxให้ตรงกับตัวพิมพ์เล็กxเมื่อใช้manหรือไม่"

นี่คือวิธีหนึ่ง

man -Tascii manpage |less

ฉันไม่ทราบรายละเอียดที่เต็มไปด้วยเลือด แต่การroffประมวลผลกำลังทำมาร์กอัปและเพจเจอร์ดูเหมือนว่าจะตรงกับข้อความที่ไม่ถูกทำเครื่องหมายแม้ว่าจะแสดงข้อความที่ถูกทำเครื่องหมาย
สับสนมากหวังว่าnroffกูรูจะสามารถอธิบายไปป์ไลน์ได้


สิ่งนี้สร้างความยุ่งเหยิงในเทอร์มินัล GUI ของฉัน (เต็มไปด้วยESC[1mลำดับประเภท)
goldilocks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.