所有命令’ 手册页 存储在 /usr/share/man/ Linux 中的目录。 手册页被压缩在 压缩包 (.gz) 格式。 想知道哪个命令在您的 Linux 系统上拥有最大的手册页吗? 这里最大的意思是,我说的是手册页中的行数。 这与打印时的文件大小或页数无关。 如果您想知道如何在 Linux 和 Unix 发行版中找到最长的手册页,请遵循此处给出的任何一种方法。
在 Linux 中查找最长的手册页
我们可以通过计算其中的行数和单词数来找到最大和最长的手册页。 这 厕所 命令用于计算文件中的行数和字数。 例如,要计算中的行数 ls 命令的手册页,运行:
$ man ls | wc -l
同样,要计算 ls 手册页中的单词数,请使用 -w 像下面这样的标志。
$ man ls | wc -w
在 linux 的手册页中查找行数和单词数
但是,计算每个手册页中的行数是乏味的、耗时的,而且找出整个系统中最长的手册页可能是一个愚蠢的想法。 我们可以使用 for 循环 如下所示。
for i in {1..8}; do f=/usr/share/man/man$i/$(ls -1S /usr/share/man/man$i/ | head -n1); printf "%s: %9dn" "$f" $(man "$f" 2>/dev/null | wc -l); done
此命令将分析手册目录(1 到 8)并按降序显示每个目录中最长的手册页。 这将需要几分钟,具体取决于系统中手册页的数量。
这是我的 Ubuntu 18.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 全部 和 25468 线总数。
你可以交叉检查它 厕所 命令如下。
$ man ffmpeg-all | wc -l 25468
如果您想根据字数而不是行数找到最长的人,请运行:
for i in {1..8}; do f=/usr/share/man/man$i/$(ls -1S /usr/share/man/man$i/ | head -n1); printf "%s: %9dn" "$f" $(man "$f" 2>/dev/null | wc -w); done
样本输出:
/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 中查找最长手册页的简单脚本
这是一个简单的 BASH 脚本,用于查找 Linux 系统中最长的手册页。
创建一个文件,用于 example longman.sh(简称 最长的人 页):
$ nano longman.sh
在其中添加以下行:
#!/usr/bin/env bash cd /usr/share/man/ for fn in $(find -maxdepth 1 -type d -iname 'man[1-8]'); do fn=${fn#./} ls -1Sp "$fn" | head -n 10 | sed -Ee "s,^,$PWD/$fn/," | while read manpage; do shortname=$(echo "$manpage" | sed -e "s,$PWD/man,," -e "s,/,"$'t'",") printf '%9dt%sn' $(man "$manpage" 2>/dev/null | wc -l) "$shortname" done done | sort -n
如果要计算字数而不是行数,请使用 wc -w 在上面的脚本中。 该脚本获取每个 man 目录中的前 10 个,编译一个表并按行数对其进行排序。 如果您的系统上不存在任何编号的部分 1-8,它也会排除它们。
Save 和 close 该文件并使用命令使其可执行:
$ chmod +x longman.sh
现在,运行此脚本以查找系统中最长的手册页:
$ ./longman.sh
最长的手册页显示在底部。 如果要在顶部显示最长的手册页,请在上述脚本中使用“sort -rn”。
样本输出:
[...] 14236 1 ffmpeg-filters.1.gz 15470 1 x86_64-linux-gnu-g++-7.1.gz 15470 1 x86_64-linux-gnu-gcc-7.1.gz 20579 1 ffplay-all.1.gz 20797 1 ffprobe-all.1.gz 24856 1 ffserver-all.1.gz 25468 1 ffmpeg-all.1.gz
在 Linux 中查找最长手册页的 Bash 脚本
中间的数字表示 手册页部分.
要了解有关手册页的更多详细信息,请运行:
$ man man
$ man -k man
$ info man
建议阅读:
- 如何在 Ubuntu 上安装缺少的命令手册页
- 如何创建和维护自己的手册页
希望这很有用。