`man git init` จะรับหน้า man ที่ถูกต้องได้อย่างไร?


52

ดังนั้นดูเหมือนว่าการพิมพ์man git initลงใน bash prompt บนระบบ Ubuntu 14.04 นั้นเป็นแบบเดียวกับที่man git-initฉันไม่แน่ใจ

manหน้าman(คือman man) ดูเหมือนจะไม่อนุญาตให้มีการสร้างนี้เว้นแต่gitเป็นsectionของคู่มือ 1แต่หน้าคนที่ดูเหมือนว่าจะมาจากส่วน

นี่เป็นการรองรับการใช้งานที่ไม่มีเอกสารmanหรือไม่? ฉันเข้าใจผิดเกี่ยวกับเอกสารประกอบmanหรือไม่? มีเวทมนตร์อื่น ๆ เกิดขึ้นอีกไหม? ใครสนใจที่จะอธิบาย?


ดูเหมือนว่า git-init อาจเป็นเสื้อคลุมสำหรับgit init
Jeff Schaller

คำตอบ:


71

การใช้งานบางอย่างmanรวมถึงที่อูบุนตูใช้แทนช่องว่างในคำค้นหาด้วยเครื่องหมายขีดกลางและพยายามค้นหาหน้าคู่มือภายใต้ชื่อนั้น ดังนั้นจะมองหาสิ่งเดียวกันเช่นman git init man git-initในทำนองเดียวกันman run partsและman ntfs 3gทำงาน (ถ้าคุณมีrun-partsและntfs-3gในระบบของคุณ)

มันทำสิ่งนี้กับคู่ของคำเท่านั้นดังนั้นจึงman git annex syncไม่ทำงาน (แม้ว่าman git-annex syncจะเป็นเช่นนั้นเพราะเป็นคำที่จับคู่อีกครั้ง)

ในความเป็นจริงเมื่อคุณขอหน้าคู่มือสองหน้า (เช่นman git bashเพื่อดูทั้ง git และ bash manpages) manอันดับแรกพยายามค้นหาgit-bashmanpage -dคุณสามารถดูนี้ในการส่งออกการแก้ปัญหาถ้าคุณเปิดใช้งานได้ด้วย

ฟีเจอร์ man นี้เรียกว่า "หน้าย่อย" คุณสามารถอ่านซอร์สโค้ดที่ใช้หน้าย่อยใน man-db (ขอบคุณStephen Kitt ) การค้นหาman(1)manpageสำหรับ "subpages" จะนำคุณไปสู่คำอธิบายของพฤติกรรมนี้ภายใต้--no-subpagesตัวเลือก:

--no-subpages
      By default, man will try to interpret pairs of manual page
      names given on the command line as equivalent to a single
      manual page name containing a hyphen or an underscore.  This
      supports the common pattern of programs that implement a
      number of subcommands, allowing them to provide manual pages
      for each that can be accessed using similar syntax as would be
      used to invoke the subcommands themselves.  For example:

        $ man -aw git diff
        /usr/share/man/man1/git-diff.1.gz

      To disable this behaviour, use the --no-subpages option.

        $ man -aw --no-subpages git diff
        /usr/share/man/man1/git.1.gz
        /usr/share/man/man3/Git.3pm.gz
        /usr/share/man/man1/diff.1.gz

ดูเหมือนว่าจะไม่ทำงานบน CentOS 6.6 มันเป็นอูบุนตูเท่านั้นหรือ
สัญลักษณ์แทน

1
@ Wildcard ส่วนไหนที่ใช้ไม่ได้ มันควรจะทำงานได้ตราบใดที่ CentOS ใช้man-db (มีmanการใช้งานอื่น ๆ) และหน้าย่อยไม่ได้ถูกปิดใช้งาน (เช่นด้วย--no-subpages) ฉันใช้ Debian ดังนั้นมันจึงไม่ใช่แค่ Ubuntu
Derobert

2
สิ่งที่สำคัญคือว่าเรื่องนี้มีความเป็นเอกลักษณ์ให้กับเฉพาะmanการดำเนินงานของ มันไม่ได้เป็นสากลหรือเป็นเรื่องธรรมดา
chepner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.