web-dev-qa-db-ja.com

ターミナルからのオンラインマニュアルページ

すでに答えがあるかもしれない質問を提起するリスクがあるので、オンラインソースを使用して私のシステムにインストールされていないプログラム/アプリの私のターミナルのmanページを読むことができるかどうか、そしてどのようにできるか誰かが知っているかどうか尋ねたいです/オンラインツール。

私はstackexchangeとgoogle検索を行いましたが、この問題については何も見つかりませんでした。

たとえば、man grepは期待どおりにgrepマニュアルを作成します。一方、agrepがインストールされていないため、man agrepはエラーになります。 agrep manualを読み取るには、google agrep man pagesを実行する必要があり、次のような結果が得られます: https://linux.die.net/man/1/agrep

PS:ところで、 http://man7.org/linux/man-pages/dir_all_alphabetic.html agrepを提供しないのは奇妙に思えます...

ターミナルから(agrepをインストールせずに)man agrepまたは同様のコマンドを実行して、通常のmanの動作どおりにターミナルでagrepのマニュアルページを読み取ることができるかどうか疑問に思います。

世界のすべてのマニュアルページがローカルで利用できるとは思いません。ブラウザを開いたり、キーワードを入力したり、結果を検索したりせずに、man(または他のコマンド)を使用して、インストールされていないプログラムのmanページを検索および表示するトリッキーな方法があるかどうか疑問に思います。

PS:Kusalanandaが気付いたように、Webクエリを上げると、特定のディストリビューションバージョンに適さない結果になる可能性があります(異なるバージョンの結果がポップアップ表示されます)。したがって、(私の夢の中で)最良の方法は、私のセットアップ専用のオンラインmanページ(つまり、次のようなもの)を取得できるDistro固有の(私の場合はDebian)内部/組み込みコマンド(またはスイッチ)がある場合です。 man --online agrepまたはonlineman agrep)。そうではないようです。

4
George Vasiliou

linkslinks -dump https://linux.die.net/man/1/agrep | lessを使用できます。カテゴリと名前を変更するだけで問題ありません。

5
schaiba

これがUbuntuの場合、dmanパッケージからbikeshedコマンドを使用できます。から man dman

dman   is   a   script   that   remotely   retrieves   manpages    from
http://manpages.ubuntu.com, but reads them on the local system.

This  is  often  useful  to read a manpage of a utility that you do not
have installed on the local system.

It will cycle through each manpage section available for a given TOPIC.

IIRC、dmanはスクリプトなので、 https://manpages.debian.org で動作するように変更できる可能性があります。

3
muru

別の方法として、代わりに lynx text browser を検討することもできます。そうすれば、次のように入力するだけで済みます。

lynx https://linux.die.net/man/1/agrep

これは多くの状況で機能し、多くのシステムのソフトウェアリポジトリで広く利用できるようです。

システムのバージョンを入手したことを知っている限り、インストールしたバージョン番号からバージョン番号を取得し、読み込もうとしているマニュアルページを調べなければ、それを行う方法はないと思います。

2
EdwinW

オンラインサービスを使用してマニュアルを表示するのはすばらしいことですが、インストールパッケージからマニュアルページを引き出すことについての@Kusalanandaのコメントを読むとすぐに、ディストリビューションの正しいマニュアルを確実に読むことができるこの手法を実装することに夢中になりました。

以下のソリューションの唯一のバグは、Debian Testing8.6で利用可能な最新バージョンのapt/dpkgに基づいており、他のシステムでは利用できない可能性があることです。

ダウンロードせずに.debファイルからmanページを抽出します
問題のパッケージをインストールする計画がある場合と同じように、debファイルを見つけます(つまり、yade):

apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_AMD64.deb' yade_2016.06a-7_AMD64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4

PS:-print-urisスイッチはdebパッケージのURLを出力しますが、debはダウンロードされません。

このdebファイルに隠されているマニュアルページを見つけてください:

dpkg -c <(curl -sL -o- http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_AMD64.deb) |grep "man/man" |grep -vE "\/$" |awk '{print $NF}'
./usr/share/man/man1/yade-batch.1.gz
./usr/share/man/man1/yade.1.gz

Manページyade.1.gzを読む(debをダウンロードせずに):

man <(dpkg-deb --fsys-tarfile <(curl -sL -o- http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_AMD64.deb) |tar -xO ./usr/share/man/man1/yade.1.gz)

manアプリケーションを使用すると、manページが正しく表示されます。

apt --version --> apt 1.4~beta2 (AMD64)
dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (AMD64).
man --version --> man 2.7.6.1
tar --version --> tar (GNU tar) 1.29
curl --version --> curl 7.51.0 (x86_64-pc-linux-gnu) libcurl/7.51.0 GnuTLS/3.5.7 zlib/1.2.8 libssh2/1.7.0 nghttp2/1.17.0 librtmp/2.3  

debファイルをダウンロードする別の方法:
従来のapt-get、ar、tarに基づく以下の方法は、どのディストリビューションでも機能するはずです。
debファイルが現在の作業ディレクトリにダウンロードされ、manページが抽出されてからファイルが削除されます。

pkg="$1"
apt-get download "$pkg" 2>/dev/null
debname=$(find . -name "$pkg*.deb")
datatar=$(ar t "$debname" |grep "data.tar") 
#ar t prints out the contents of the archive 

if [[ ${datatar##*.} == "gz" ]];then #extension check 
  options="z"
Elif [[ ${datatar##*.} == "xz" ]];then
  options="J"
else
  echo "data.tar archive inside deb is not a gz or xz archive. Exiting"
  exit 1
fi

manpage+=($(ar p $debname $datatar | tar t"$options" |grep "man/man" |grep -vE "\/$" |awk '{print $NF}')) #tar t lists the files included in archive
man <(ar p "$debname" "$datatar" | tar xO"$options" ${manpage[@]}) 
#ar p and tar -O prints archive files / contents in stdout to be read by man
rm -f $debname #or rm -i for more control.

manpages.debian.orgを使用
3番目の選択肢として、2017年1月の時点で、誰かがエイリアス/スクリプトを使用して、正しい/最新のmanに直接ジャンプする新しいdebian manpages Webサイトに基づいて、debiannlineからmanページをプルできます。必要なパッケージのページ:

alias debman='function __debman { links -dump https://manpages.debian.org/jump?q=$1 |awk "/Scroll to navigation/,0" |less; };__debman'

ターミナルで$ debman yade

0
George Vasiliou