Làm thế nào để `man git init` có được trang man đúng?


52

Vì vậy, có vẻ như việc nhập man git initvào dấu nhắc bash trên hệ thống Ubuntu 14.04 cũng giống như vậy man git-init, chỉ có điều tôi không chắc lắm.

Các mantrang cho man(ví dụ man man) dường như không cho phép xây dựng này, trừ trường hợp gitlà một sectionsố hướng dẫn, nhưng trang người đàn ông dường như xuất phát từ phần 1.

Đây có phải là một cách sử dụng không có giấy tờ được hỗ trợ bởi man? Tôi đã hiểu nhầm tài liệu của man? Là một số phép thuật khác xảy ra? Bất cứ ai quan tâm để giải thích?


Xuất hiện như thể git-init có thể chỉ là một trình bao bọc chogit init
Jeff Schaller

Câu trả lời:


71

Một số triển khai man, bao gồm cả triển khai được sử dụng bởi Ubuntu, thay thế khoảng trắng trong cụm từ tìm kiếm bằng dấu gạch nối và cố gắng tìm một trang thủ công dưới tên đó. Vì vậy, man git inittìm kiếm điều tương tự như man git-init. Tương tự, man run partsman ntfs 3glàm việc (nếu bạn có run-partsntfs-3gtrên hệ thống của bạn).

Tuy nhiên, nó chỉ thực hiện điều này với các cặp từ, do man git annex syncđó không hoạt động (mặc dù man git-annex syncvậy, vì đó lại là một cặp từ).

Trong thực tế, khi bạn yêu cầu hai trang hướng dẫn (ví dụ: man git bashđể xem cả hai trang git và bash), manthực sự trước tiên hãy cố gắng tìm kiếm một git-bashtrang. Bạn có thể thấy điều này trong đầu ra gỡ lỗi nếu bạn bật nó với -d.

Tính năng man này được gọi là "trang con", bạn có thể đọc mã nguồn triển khai các trang con trong man-db (cảm ơn, Stephen Kitt ). Tìm kiếm man(1)trang chủ cho "trang con" cũng sẽ dẫn bạn đến phần mô tả hành vi này theo --no-subpagestùy chọn:

--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

Điều này dường như không hoạt động trên CentOS 6.6. Có phải chỉ có Ubuntu?
tự đại diện

1
@Wildcard phần nào dường như không hoạt động? Nó sẽ hoạt động miễn là CentOS đang sử dụng man-db (có các mantriển khai khác ) và các trang con chưa bị vô hiệu hóa (ví dụ: với --no-subpages). Tôi đang sử dụng Debian, vì vậy nó chắc chắn không chỉ là Ubuntu.
derobert

2
Điều quan trọng là điều này là duy nhất cho việc thực hiện cụ thểman . Đó không phải là phổ biến hay đặc biệt phổ biến.
chepner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.