ฉันจะใช้มนุษย์โดยไม่น้อยได้อย่างไร


21

โดยค่าเริ่มต้นmanใช้lessในการส่งข้อความ ฉันจะบอกให้มันส่งออกไปยัง stdout ได้อย่างไร เทอร์มินัลอีมูเลเตอร์ของฉันมีแถบเลื่อนและฟังก์ชั่นการค้นหาและฉันต้องการใช้สิ่งเหล่านั้นแทนปุ่มลูกศร

คำตอบ:


31

จริงๆแล้วมันใช้สิ่งที่ระบุไว้ในMANPAGERหรือPAGERตัวแปรสภาพแวดล้อม

ขึ้นอยู่กับmanการนำไปใช้และเวอร์ชันของคุณอาจมีสวิตช์บรรทัดคำสั่งเพื่อระบุเพจเจอร์

ด้วยการใช้man-dbฉันใช้วิธีด้านล่างทั้งหมดทำงาน:

MANPAGER=cat man man

PAGER=cat man man

MANOPT='-P cat' man man

man -P cat man

หากต้องการตั้งค่าอย่างถาวรเพียงเพิ่มลงใน~/.bashrc(หรือไฟล์เริ่มต้นอื่นที่เชลล์ใช้):

export MANPAGER=cat

ที่ทำงานกับmanการใช้งานเก่าบางส่วนเช่นกันในขณะที่MANOPTเป็น man-db เฉพาะ:

export MANOPT='-P cat'

(อย่าตั้งค่าPAGERวิธีนี้ดีกว่าแอปพลิเคชั่นอื่น ๆ ก็ถูกใช้เช่นกัน)

อาจมีไฟล์กำหนดค่าส่วนกลาง มนุษย์มีฐานข้อมูลหรือ/etc/man_db.conf /etc/manpath.configที่นั่นคุณสามารถตั้งค่า:

DEFINE    pager    cat

แต่น่าเสียดายที่มีการดำเนินการในการพิจารณาเฉพาะในกรณีที่ค่าMANPAGERมิได้PAGERเป็นชุด


2
คำตอบที่ดี. Re: ~/.bashrcคุณสามารถรวมการส่งออกในเงื่อนไขเพื่อกำหนดเพจเจอร์เฉพาะถ้ามันเป็นเทอร์มินัล / อีมูเลเตอร์ที่เหมาะสม: if [ "x$TERM" = "xxterm" ]; then export MANPAGER=cat; fi; เห็นได้ชัดว่าแทนที่xtermด้วยอีมูเลเตอร์ที่เหมาะสม
เควิน

1
ที่จริงแล้วมันดีและจากการออกแบบที่ manpath.config ถูกนำมาพิจารณาในภายหลัง ทั้ง PAGER และ MANPAGER เป็นระดับผู้ใช้โดยที่ไฟล์ config เป็นระดับระบบ หากระดับระบบจะมีความสำคัญผู้ใช้จะไม่สามารถแทนที่ได้เลย
Paul de Vrieze

@PauldeVrieze MANPAGERคุณมีสิทธิใน ฉันใช้คำว่า "น่าเสียดาย" สำหรับความจริงที่ว่าพฤติกรรมนี้ใช้กับPAGERซึ่งเป็นการตั้งค่าทั่วไป (ใช้โดยเครื่องมือจำนวนมาก) และฉันต้องการที่จะไม่แทนที่การตั้งค่าเฉพาะ (ใช้โดยเครื่องมือเดียวเท่านั้น) แม้ว่าจะเป็นเช่นนั้น หนึ่งคือระดับระบบ
จัดการ

หากคุณต้องการแทนที่การตั้งค่าเฉพาะสำหรับเครื่องมือเดียวคุณสามารถทำได้โดยสร้างนามแฝงฟังก์ชันเชลล์หรือสคริปต์ตัวตัดคำ อย่างใดอย่างหนึ่งดังกล่าวจะเป็น: PAGER=cat manตัวอย่างเช่น:alias man='PAGER=cat MANPAGER=cat man'
Paul de Vrieze

6

เพียงส่งออกท่อของmanถึงcat?

man ls | cat   # useful use of cat

6
โปรดทราบว่าขึ้นอยู่กับการmanใช้งานว่า 1) ข้อผิดพลาดเพิ่มขึ้น 2) แสดงรหัสรูปแบบ troff ในเทอร์มินัล 3) ลบการจัดรูปแบบทั้งหมด 4) ทำงานตามที่คาดไว้
จัดการ

2
ฉันไม่เคยเห็นมันทำอะไรนอกจาก 4
Keith Thompson

@KeithThompson macOS นั้นmanดูเหมือนว่าจะใช้เพจเจอร์ที่ตั้งไว้MANPAGERแม้ในขณะที่เอาท์พุทเป็นไฟล์หรือไพพ์ และถ้าวิทยุติดตามตัวเป็นlessสิ่งที่ดีเพราะlessพฤติกรรมเช่นcatเมื่อเอาท์พุทเป็นท่อ ... แต่ถ้าคุณใช้อย่างอื่น (เช่น Vim ซึ่งฉันใช้) แล้วก็ไม่ดี
muru

1

ลองใช้คำสั่งเหล่านี้เพื่อสร้างเอาต์พุต man โดยไม่มีเพจเจอร์

  • man ls | cat (สร้างความกว้างคงที่)

  • man -P cat ls (สร้างความกว้างของตัวแปร)

ฉันอยู่ในระบบ GNU linux


1

อีกมุมหนึ่ง: คล้ายกับคำตอบของโทนี่

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

man bash  > bashman.txt

ฉันมีสำเนาของหน้าคนทุบตีเช่นเดียวกับส่วนในการควบคุมการไหลของทุบตีและธงทดสอบทุบตีบันทึกเป็นไฟล์ข้อความในไดเรกทอรีถังขยะของฉันดังนั้นฉันสามารถโหลดพวกเขาลงในโปรแกรมแก้ไขข้อความของฉัน (เคท) สำหรับการอ้างอิงในขณะที่ฉัน การเขียนสคริปต์ทุบตี


คำเตือน: ขึ้นอยู่กับระบบของคุณและหน้า man, คำสั่งด้านบนอาจส่งผลให้ข้อมูลการจัดรูปแบบและตัวควบคุมในไฟล์

เพื่อหลีกเลี่ยงปัญหานี้ให้ทำตามที่แนะนำในLESS='+/^TIPS' man man:

To  get a  plain  text  version  of a man page, without backspaces and
underscores, try

  # man foo | col -b > foo.mantxt

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