web-dev-qa-db-ja.com

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

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

Screenshot of the ps man page

101
its_me

Manページは Unix First Edition にさかのぼります。 hypertext が発明されたが、まだ幼少期にあった。 Webは20年先にあり、マニュアルは実際に印刷された本であり、多くの場合、ページごとに1つのコマンドが含まれていました(そのため、ページと呼ばれていました)。

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

  • tkman 、ハイパーリンク付きのGUIマニュアルページビューアー
  • WoManwikiman comparsionformerly )、Emacsのmanページブラウザ、ハイパーリンクをサポート
  • man2html 、HTMLコンバーター(結果を読み取るためのWebブラウザーに加えて)

いくつかのオペレーティングシステムのマニュアルページを、いくつかのオンラインサイトで、man2htmlまたは類似のツールによってHTMLに変換して閲覧できます。次に例を示します。

Manページがunixで確立されたドキュメント形式になってからしばらくして、Webが発明される前に、 [〜#〜] gnu [〜#〜] プロジェクトは info ドキュメント形式を導入し、テキスト端末用に設計された単純なマークアップにこだわる一方で、人よりも高度です。人と比較した情報の主な革新は、他のページへのハイパーリンクを含む複数ページのドキュメントを作成することでした。 Infoは依然としてGNUプロジェクトに推奨されるドキュメント形式ですが、ほとんどのInfoページは Texinfo ソース(または他の形式)から生成されます)HTMLを生成することもできます。プログラムのinfoドキュメントが存在する場合、それは多くの場合メインマニュアルですが、manページにはコマンドライン引数に関する基本的な情報しか含まれていません。

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

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

そのようなフォーマットを見て、そのようなハイライトがプルアップされてリンクを作成できる関連するmanページがあることを示す可能性があると推測される特別なドキュメントリーダーがいますが、私にはわかりませんどれがしますか。たぶんpinfo

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

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


[1] テキストエディタでmanページファイルを開くと、読みやすい形式になっていない未加工のmanページが表示されます。未加工のmanページは、troffと呼ばれるマークアップ言語で記述されています。 troffの詳細とmanページの作成方法については、 https://liw.fi/manpages/ を参照してください。

39
Caleb

これは非常に遅い応答ですが、w3mmanを使用してください。 w3mmanは、w3mによるシステムのマニュアルページャーです。

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

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

13
akawaguc

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

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

!man top

または

!man 1 top

qを複数回押して、すべて閉じる必要があります。これは、LESSSECURE=1が環境変数として設定されている場合は機能しないことにも注意してください。これにより、lessがセキュアモードで実行され、!を使用できなくなります。 「コマンドが利用できません」などのメッセージが表示されます。

11
Anne van Rossum

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

私は使いたい:

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

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

-P w3mは、hmanへの最初のブラウザーが lynx または sensible-browser であるためです優先 w3m

hmanは、html2manにバンドルされているツールです。 this を参照

確認して終了するのが面倒な場合は、 this を使用してください。

2
albfan

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

info manを使用して、アイテムのSEE ALSOセクションに移動したらEnterキーを押します。

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

2
binarytrails

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

Yelp 'man:exit'

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

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

Yelp 'man:exit(2)'

問題:Yelpにはバグがあり、コマンドラインから呼び出したときに複数のエラーが出力される準備ができています。また、エイリアスまたはカスタムShell関数は、すべてのエラーを/dev/nullにリダイレクトするのに役立ちます

2
Hibou57

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

ハック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
}

スクリーンショット..

manual in vim screenshot

アスキーネマ..

https://asciinema.org/a/130131

今….

  1. たとえば、man vimと入力すると、このmanページがvimで開きます

    • たとえば、man man vimと入力すると、最初にmanのマニュアルが開き、vimを終了するとvimのマニュアルが開きます
  2. あなたが押すと K (これは大文字のkです)下部にある別のmanページ(SEE ALSOセクション)にいるときは、このマニュアルにジャンプします(残念ながらa less pager-これは、let no_man_maps = 1があるためです。そうしないと、vimはq:qに強制的に設定し、マクロを簡単に記録できなくなります。

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

  4. コピーして貼り付けたり、vimで自由に移動したり、バッファーや:w ~/usefulfileを変更したりすることもできます。レコードマクロ、"+y+clipboardがある場合)などを使用して、vimで通常行うすべてのことをクリップボードにヤンクできます。

lessよりもずっと良いと思います。

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

いくつかのメモ:

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

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

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

  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[@]}"
}

スクリーンショット..

multiple manuals in vim

アスキーネマ..

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

これはhack 1lessフェイス(1つのバッファーで複数のマニュアルを表示できるようになりました)という問題を解決しますが、あまりエレガントではありません。

ノート:

  1. [〜#〜]重要[〜#〜]必要な場合hack2を機能させるには、:let no_man_maps = 1~/.vimrcに配置する必要があります。これは、vimが.../vim80/man.vimをソースとし、q:qに強制的に再マッピングされるためです。

  2. より多くのクリーンアップが含まれます(今、すべてのマニュアルを/ tmp/*。manに保存します)

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

  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>"などのクレイジーなものを実行できます(nested
2
Dylan

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

BROWSER=google-chrome man ps --help

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

1
tutuDajuju