GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで最長のマニュアルページを見つける方法

すべてのコマンドのマニュアルページ / usr / share / man /に保存されます Linuxのディレクトリ。マニュアルページはgzipで圧縮されています (.gz)形式。 Linuxシステムで最大のマニュアルページがあるコマンドを知りたいですか?ここで最大の意味は、manページの行数について話していることです。印刷時のファイルサイズやページ数ではありません。 LinuxおよびUnixディストリビューションで最長のマニュアルページを見つける方法がわからない場合は、ここに記載されている方法のいずれかに従ってください。

Linuxで最長のマニュアルページを探す

行数と単語数を数えることで、最大および最長のマニュアルページを見つけることができます。 wc コマンドは、ファイル内の行数と単語数をカウントするために使用されます。たとえば、 lsの行数をカウントするには コマンドのマニュアルページ、実行:

 $ man ls | wc -l <​​/ pre> 

同様に、lsのマニュアルページの単語数を数えるには、 -wを使用します。 以下のようなフラグ。

 $ man ls | wc -w 

Linuxのmanページで行数と単語数を検索する

ただし、各manページの行数を数えるのは面倒で時間がかかり、システム全体で最も長いmanページを見つけるのはおそらく馬鹿げた考えです。これは、forループを使用して簡単に見つけることができます。 以下のように。

 for i in {1..8}; do f =/ usr / share / man / man $ i / $(ls -1S / usr / share / man / man $ i / | head -n1); printf "%s:%9d \ n" "$ f" $(man "$ f" 2> / dev / null | wc -l);完了

このコマンドは、manディレクトリ(1から8)を分析し、各ディレクトリの最長のmanページを降順で表示します。システムのマニュアルページの数にもよりますが、数分かかります。

これが私のUbuntu18.04システムからの出力です:

 / usr / share / man / man1 /  ffmpeg-all  .1.gz: 25468  /usr/share/man/man2/perf_event_open.2.gz:1732 / usr / share / man / man3 / Net ::SSLeay.3pm.gz:8738 / usr / share / man / man4 / st.4.gz: 423 / usr / share / man / man5 / proc.5.gz:3087 / usr / share / man / man6 / espdiff.6.gz:50 / usr / share / man / man7 / groff_mdoc.7.gz:1826 / usr / share / man / man8 / dnsmasq.8.gz:1337 

LinuxとUnixで最長のマニュアルページを探す

ご覧のとおり、最長のマニュアルページは ffmpeg-all です。 25468 合計行数。

wcでクロスチェックできます 以下のようなコマンド。

 $ man ffmpeg-all | wc -l <​​strong> 25468  

行ではなく単語数に基づいて最長の男性を検索する場合は、次のコマンドを実行します。

 for i in {1..8}; do f =/ usr / share / man / man $ i / $(ls -1S / usr / share / man / man $ i / | head -n1); printf "%s:%9d \ n" "$ f" $(man "$ f" 2> / dev / null | wc -w);完了

出力例:

 / usr / share / man / man1 /  ffmpeg-all  .1.gz: 130475  /usr/share/man/man2/perf_event_open.2.gz:11031 / usr / share / man / man3 / Net ::SSLeay.3pm.gz:37886 / usr / share / man / man4 / st.4.gz: 4358 / usr / share / man / man5 / proc.5.gz:22939 / usr / share / man / man6 / espdiff.6.gz:294 / usr / share / man / man7 / groff_mdoc.7.gz:11919 / usr / share / man / man8 / dnsmasq.8.gz:16875 

コマンドを使用して正しいかどうかを確認します:

 $ man ffmpeg-all | wc -w  130475  

Linuxで最長のマニュアルページを見つけるための簡単なスクリプト

Linuxシステムで最長のマニュアルページを見つけるための簡単なBASHスクリプトを次に示します。

たとえば、longman.sh( longman の略)というファイルを作成します。 ページ):

 $ nano longman.sh 

その中に次の行を追加します:

#!/ usr / bin / env bashcd / usr / share / man / for fn in $(find -maxdepth 1 -type d -iname'man [1-8]'); do fn =$ {fn#。/} ls -1Sp "$ fn" |ヘッド-n10| sed -Ee "s、^、$ PWD / $ fn /、" |マンページを読みながら; do shortname =$(echo "$ manpage" | sed -e "s、$ PWD / man ,," -e "s、/、" $'\ t'"、")printf'%9d \ t%s \ n'$(man "$ manpage" 2> / dev / null | wc -l) "$ shortname" donedone | sort -n 

行ではなく単語数をカウントする場合は、 wc -wを使用します 上記のスクリプトで。このスクリプトは、すべてのman dirのトップ10を取得し、テーブルをコンパイルして、行数でソートします。また、システムに存在しない場合は、番号が付けられたセクション1〜8のいずれも除外されます。

ファイルを保存して閉じ、次のコマンドを使用して実行可能にします:

 $ chmod + x longman.sh 

次に、このスクリプトを実行して、システム内で最長のマニュアルページを見つけます。

 $ ./longman.sh 

最長のマニュアルページが下部に表示されます。最長のマニュアルページを上部に表示する場合は、上記のスクリプトで「sort-rn」を使用してください。

出力例:

 [...] 14236 1 ffmpeg-filters.1.gz15470 1 x86_64-linux-gnu-g ++-7.1.gz15470 1 x86_64-linux-gnu-gcc-7.1.gz20579 1 ffplay-all.1.gz20797 1 ffprobe-all.1.gz24856 1 ffserver-all.1.gz  25468 1 ffmpeg-all.1.gz  

Linuxで最長のmanページを見つけるためのBashスクリプト

中央の数字は、マニュアルページセクションを示しています。 。

マニュアルページの詳細については、次を実行してください:

 $ man man 
 $ man -k man 
 $ info man 

推奨される読み物:

  • Ubuntuにコマンドの欠落しているマニュアルページをインストールする方法
  • 独自のマニュアルページを作成および維持する方法

これがお役に立てば幸いです。


Linux
  1. LinuxでFINDを使用する方法

  2. Linuxコマンドが何をするかを知る方法

  3. LinuxでデフォルトゲートウェイIPを見つける方法

  1. Linuxでファイルを見つける方法

  2. Linux man page データベースにエントリを追加する方法

  3. Linux の man ページの読み方は?

  1. LinuxでIPアドレスを見つける方法

  2. Linuxでファイルを見つける方法

  3. KaliLinuxでIPアドレスを見つける方法