Linux manページのリンクをたどる方法は?


92

manページに記載されているリンクをたどる方法はありますか?たとえば、これはのmanページですps。赤でマークされたリンクにアクセスするにはどうすればよいですか?

ps manページのスクリーンショット


1
また、man is an interface to the on-line reference manuals(私が間違っていなければ)インターネット上のいくつかのWebページからすべての情報を取得する必要があることを意味しますよね?だから、誰もhttp://リンクが何であるかについての手がかりを持っていますか?
its_me

10
ここで「オンライン」とは、「インターネット上」ではなく「コンピューター上」(「紙上」ではなく)を意味します。
ジル

1
オンライン」:あなたは、Sierra On-Lineという会社(当時)によって出されたPC用の「アドベンチャー」クエストゲームを覚えているかもしれません。マニュアルページ:マニュアルページを閲覧する最良の方法は、エディタを使用することです。そうすれば、テキストのナビゲート、検索(など)が非常にスムーズになり、すべてのショートカットが長い間マッスルメモリに格納されます。また、プログラミングプロジェクトに取り組んでいるとしましょう。manページからコードにコピーできます。シームレスな対話にほかなりません。これと、@ Gillesの回答に対する私のコメントをご覧ください。
エマニュエルベルク

回答:


52

マニュアルページは、Unix First Editionにさかのぼります。一方でハイパーテキストが発明されていた、それはまだ始まったばかりでした。ウェブは20年先にあり、マニュアルは実際の印刷された本であり、多くの場合、適切な場合はページごとに1つのコマンドがあります(そのため、ページと呼ばれていました)。

マニュアルページに使用される形式はそれ以降多少進化しましたが、ほとんどのページは実際にはハイパーテキスト用に設計されてmanおらず、デフォルトプログラムはそれをサポートしていません(単なるプレーンビューアーであり、いくつかの基本的な形式をサポートするハックがあります)。いくつかのハイパーリンクを再構築manページの閲覧プログラム、伝統的な形式で書かれている他のmanページ、主にリンクがありますmanページの名前であり、あるセクション番号はman(1)man1

  • tkman、ハイパーリンクを備えたGUI manページビューアー
  • WoManwikiman comparsion以前)、ハイパーリンクをサポートするEmacs用のmanページブラウザ
  • man2html、man to HTMLコンバーター(および結果を読み取るためのWebブラウザー)

man2htmlたとえば、オンラインの多くのサイトで、いくつかのオペレーティングシステムのマニュアルページをHTMLに変換したり、同様のツールで参照したりできます。

manページは、UNIX上の確立文書フォーマットやWebが発明される前にいくつかの時間になった後にいくつかの時間は、GNUのプロジェクトが導入された情報のテキスト端末用に設計されたシンプルなマークアップにこだわりながら、男性よりも高度なドキュメントフォーマットを、。人と比較した情報の主な革新は、他のページへのハイパーリンクを含む複数ページのドキュメントを作成することでした。ほとんどのInfoページはHTMLも生成できるTexinfoソース(または他の形式)から生成されますが、Infoは依然としてGNUプロジェクトで好まれているドキュメント形式です。プログラムの情報ドキュメントが存在する場合、多くの場合それはメインマニュアルですが、マニュアルページにはコマンドライン引数に関する基本情報しか含まれていません。


5
素晴らしい答えです!また、言及する価値のEmacsでmanページのための他のモードがあることがある、一つは(少なくとも私は)だけで取得M-x man(とC-h v mode-nameあるMan):少なくとも一つの態様では、それがより優れているWoManことが、テーブル(表示されるので、スクリーンショットを)。もちろん、それもハイパーリンクされています。
エマニュエルベルク

1
情報プログラムのユーザーインターフェイスは、間違っているだけで直観に反しています。私はそれを使っている人を見たことがありません。
パベルシメルダ

@PavelŠimerda> 情報プログラムのユーザーインターフェイスは、間違っていると直観に反しているように感じます。<エム、何と比較して?less(1)(これはGNUのman(1)のデフォルトのページャーです)— <backspace>がバインドされていないため(そして<pgup>はまったく機能しないかもしれないので)スクロールバックする方法を思い出さなければならないこと?bそのようにして、主キーはです。どのインターフェイスパラダイムのユーザーにとって、これは直感的でしょうか?
ドミトリーアレクサンドロフ

@PavelŠimerda> 私はそれを使っている人を見たことがありません。 <less(1)と異なり、ダムpage(N)リンクをハイパーリンクに変換するという正確な理由で、テキスト端末でロックされた場合、常にマンページの読み取りにinfo(1)を使用します。その品質のジルの答えに言及されていなかったことは非常に驚いた。
ドミトリーアレクサンドロフ

37

まず第一に、それはリンクではありません。それはただ下線です。マニュアルページは、端末が処理できる簡単なフォーマットを少し備えた単なるテキストドキュメントです。下線は単なるハイライトであり、「リンク」は含まれていません。

通常のmanコマンドは単なるテキストフォーマッタです。実際、manコマンドはテキストも表示せずman、manページファイル[1]に保存されている情報をフォーマットし、フォーマットされたless出力を画面に表示する別のプログラム(通常)に送信します。これらの表示プログラムにはリンクの概念はありません。

そのようなフォーマットを見て、そのようなハイライトがプルアップしてリンクを作成することができる関連するマニュアルページがあることを示すかもしれないという教育的な推測をすることができるいくつかの特別なドキュメントリーダーがありますが、私は知りませんどれがします。おそらくpinfo

ハイパーリンクを使用したWebのような書式設定が必要な場合は、リンクが追加されたほぼすべてのUNIX manページをオンラインで見つけることができます。Googleに入力man [anything]してみてください。

あなたの例の場合、視覚的な強調表示は、簡単にプルアップできる独自のマニュアルページを持つ別のプログラム名である手がかりです。試してくださいman 1 top。1は、参照するマニュアルページのセクションを示します。セクションの説明については、この質問を参照してください。マニュアルページの数字は何を意味していますか?


[1]manテキストエディターでページファイルを開くと、man読みやすいようにフォーマットされていない生のページが表示されます。生のmanページはと呼ばれるマークアップ言語で書かれていtroffます。詳細についてはtroff、どのように書き込みするmanページを参照してください:https://liw.fi/manpages/を


それはなぜman 1 topですか?? ps 1 topのマニュアルページでリンクを見つけたので、それは次のようなものになるはずですps。「man 1 top」は私には意味がありません。どうか明らかにしてください。
its_me

manページをインターネット上で利用できるようにするリソースもいくつかあります。参照はhrefで置き換えられ、クリック可能です。
ガベ。

1
top(1)「リンク」をたどる場合はtop、最初のセクションからマニュアルページを開く必要があります。セクションの詳細については、man(1)を参照してください。奇妙なパラメータを指定してコマンドをps 1 top実行するだけなので、意味がありませんps
-rvs

2
@Aahanそれはman 1 topです。オンラインマニュアルページの最初のセクションでtopコマンドのマニュアルページを表示したいからです。参照top(1)とは、マニュアルページの最初のセクションのtopを意味します。それを確認するには、プロンプトで「man 1 top」と入力します。「男の人」を参照してください
ゲイブを。

1
@Aaran:「マニュアルのセクションはさまざまなトピックを扱っています。セクション1はユーザーコマンド(プロンプトで入力するもの)です。セクション2はシステムコールなどです。一部の文字列は複数のセクションに表示されます。今readlinkセクション1とセクション2に、表示されたprintfあなただけ入力した場合のセクション1と3でman command男性が番号順にセクションをtrysと、最初に見つかったが表示されたり、あなたと特定することができ、man # commandあなたがドキュメントを取得するために行うために持っています、readlinkシステムコール用
dmckee

12

これは非常に遅い返信ですが、w3mmanを使用します。w3mmanはw3mによるシステムのマニュアルページャーです。

https://linux.die.net/man/1/w3mman

w3mパッケージをインストールすることで試すことができます。このパッケージは、ほとんどの主要なLinux / UNIXディストリビューションとCygwinのソフトウェアリポジトリに登録されていると思います。


1
まだ言及されていない質問に回答を追加する遅い返信、それは決して問題ではありません!Unix&Linux StackExchangeにようこそ!
ベルンハルト

w3mmanまた、デフォルトのMacports w3mインストールで提供されます。それは素晴らしいです:)ありがとう!
サンパブロクパー14

8

あなたのワークフローに従うという意味で、あなたの質問をもう少し解釈してみましょう。あなたがおそらく望んでいるのは、manあなたが読んでいる下線付きのコマンドに直接導くページ内のキーの組み合わせです。したがって、他のものをインストールしたり、別のコンソールを開いたりして、たとえば正確な構文を忘れたりする必要はありません。

この最も簡単な解決策は感嘆符(lessmanページの表示に使用している場合)であり、下線付きの場所に移動する必要がありますtop

!man top

または

!man 1 top

q複数回押すことでそれらをすべて閉じる必要があります。また、がLESSSECURE=1環境変数として設定されている場合はless動作しません!。環境変数を設定すると、セキュアモードで実行され、を使用できなくなります。「コマンドが使用できません」などの情報が表示されます。


1

w3mmanは、リンクをたどるためのソリューションである、(少なくともUbuntuの12.10で)すべての画面を使用していません

私は使用したい:

$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'

〜/ .bash_aliasesまたは同様の起動スクリプトに最後のコマンドを追加して、すべてのセッションで取得します。

-Pのw3mのは HMANへの最初のブラウザであるためであるオオヤマネコ賢明なブラウザが、私は好むのw3m

hmanhtml2manにバンドルされているツールです。参照してください。これを

確認で終了するのが面倒な場合は、私にとってはこれを使用しています


私の間違いは、パッケージがhtml2manでなければならない
albfan

1

特にUbuntuには、Yelpがあります。これはデフォルトでインストールされ、デフォルトでマニュアルページを表示できますが、その呼び出しはmanコマンドの表示と同じではありません。エイリアスまたはシェル関数は、後者のポイントを回避できます(シェルによって異なります)。

yelp 'man:exit'

知らない方法でデフォルトでセクションになります。注意:手動トピックのセクションリストを取得するにはwhatis、のようにを使用しwhatis exitます。

Yelpに特定のセクション、たとえば2のマニュアルページを表示するように要求するには、次のようにします。

yelp 'man:exit(2)'

問題:yelpにはバグがあり、コマンドラインから呼び出すときに複数のエラー出力を受け取る準備ができています。また、エイリアスまたはカスタムシェル関数を使用すると、すべてのエラーを/dev/null


1

彼らが言ったように、それはそれのために設計されていませんでした。

アイテムの[ 関連項目]セクションに移動したら、使用info manしてEnterキーを押します。

info-Infoドキュメントを読む


1

ハック(のカップル)があります。

ハック1

これを〜/ .bashrcまたは〜/ .zshrcに入れてください

function man(){
    for arg in "$@"; do
        vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
    done
}

スクリーンショット

vimスクリーンショットのマニュアル

アシネマ..

https://asciinema.org/a/130131

今..

  1. あなたが入力するとman vim、例えば、それはこのmanページを開きますvimの

    • あなたが入力した場合man man vim、例えば、それは最初にオープンしますmanのマニュアルとあなたがVimを終了した後、それが開きますvimのマニュアルを
  2. 下部の別のmanページ(関連セクション)にいるときにK(大文字ですk)を押すと、このマニュアルにジャンプします(残念ながら、以下のページャーの内部にあります。これは、私たちが持っているからです。そうすると、vimは強制的になり、マクロを簡単に記録できなくなり、vimは他の方法で正常に動作する可能性があります)。let no_man_maps = 1q:q

    • 入力したこの2番目のマニュアルを終了すると、表示していた以前のマニュアルに戻ります。
  3. ftplugin / man.vimをロードし、ftが(自動的に)設定されてmanいるため、非常にきれいな構文強調表示が得られます。

  4. コピーして貼り付けたり、vimで自由にナビゲートしたり、バッファやを変更したりすることもできます:w ~/usefulfile。記録マクロ、"+y(もしあれば)を使用してクリップボードにヤンクするなど、vimで通常行うことはすべて実行できます+clipboard

私はそれが少ないよりずっといいと思います。

私が見つけた唯一のマイナーなset折(ページャーとしてlessを使用している場合に存在する)は、1つのvimセッションで複数のマニュアルを開きたい場合です。私はこれを行う方法が本当に見当たりません。

いくつかのメモ:

  1. バッファを保存しようとすると、 E382: Cannot write, 'buftype' option is set

    • 誤って保存するのを防ぐため、保存できないことが好きです
  2. あなたはまだのように保存することができます :w /tmp/man.man

    • .man拡張子を付けて保存すると、開くとファイルタイプが設定さmanれます
    • あなたがそれを保存しない場合は.man延長、あなただけにフィートを設定することができますman実行することにより、:set ft=man
  3. autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'たとえば、manページを開くときに何かをする必要がある場合は、を使用できます。

  4. vimrcに以下を入力して、を押しKてマニュアルを開こうとした後、を押しGて前のマニュアルに戻るようにしました。


augroup man
    autocmd!
    autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
    autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END

ハック2

これを〜/ .bashrcまたは〜/ .zshrcに入れてください

function man(){
    declare -a args
    for arg in "$@"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

スクリーンショット

vimの複数のマニュアル

アシネマ..

https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv

これは、問題は解決し1ハックあまり顔(今は一つのバッファ内に複数のマニュアルを表示することができますが)、それはあまりエレガントです。

ノート:

  1. 重要hack2を機能させたい場合は、を入力する必要が:let no_man_maps = 1あります~/.vimrc。これは、vimがソース.../vim80/man.vimqなり、に強制的に再マップされるため:qです。

  2. さらにクリーンアップが必要です(すべてのマニュアルを/tmp/*.manに保存します

  3. ただし、上記のように、1つのセッションで複数のマニュアルページを表示できるようになりました

  4. を押すKと、新しいvimセッションが開きますが、

    • 必要に応じて、autocmdをバインドして(上記のようなautocmdを使用)、そのような何かautocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"またはそのようなクレイジーなことを行うことができます(未テスト

色の悪いアシネマの謝罪。私の端末では色がずっときれいに見えます。
ディラン

0

--html引数man$ を使用して、$ BROWSER環境変数で定義されたブラウザーで開くことができました。

BROWSER=google-chrome man ps --help

私はFedoraを使用しています。これがディストリビューションで機能するかどうかわからない場合は、テストしてコメントで報告してください。


このオプションはUbuntu 12.04で認識されているようですが、失敗します。
Hibou57 14

OK、パッケージgroffをインストールする必要があります。groff同じ名前のパッケージは、(コマンドが付属していない間にコマンドがあるかもしれgroff-base、ない完全なgroffパッケージ)。私がやるman --html="surf file%c//%s" <command>、それは大丈夫です。ただし、非常に限られたハイパーテキストがあります:-/。
Hibou57 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.