Поиск по сайту:

Как найти самую длинную справочную страницу в Linux

Как вы, возможно, знаете, страницы руководства всех команд хранятся в каталоге /usr/share/man/ в Linux. Страницы руководства сжаты в формате gzip (.gz). Вы когда-нибудь хотели узнать, у какой команды самая большая страница руководства в вашей системе Linux? Здесь самое большое означает количество строк на странице руководства. Речь идет не о размере файла или количестве страниц при печати. Если вы когда-нибудь задавались вопросом, как найти самую длинную справочную страницу в дистрибутивах Linux и Unix, воспользуйтесь любым из методов, приведенных ниже.

Найти самую длинную справочную страницу в Linux

Мы можем найти самые большие и длинные справочные страницы, посчитав количество строк и слов в них. Команда wc используется для подсчета количества строк и слов в файле. Например, чтобы подсчитать количество строк на странице руководства команды ls, выполните:

man ls | wc -l

Аналогично, чтобы подсчитать количество слов на странице руководства ls, используйте флаг -w, как показано ниже.

man ls | wc -w

Найти количество строк и слов на странице руководства в Linux

Однако подсчет количества строк в каждой странице руководства — утомительный, отнимающий много времени и, возможно, глупый способ найти самые длинные страницы руководства во всей системе 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: %9d\n" "$f" $(man "$f" 2>/dev/null | wc -l); done

Эта команда проанализирует каталоги man (от 1 до 8) и отобразит самую длинную страницу руководства в каждом каталоге в порядке убывания. Это займет несколько минут, в зависимости от количества страниц руководства в вашей системе.

Вот результат моей системы Ubuntu:

/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
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); 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.

Создайте файл, например longman.sh (сокращение от longest man):

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 '%9d\t%s\n' $(man "$manpage" 2>/dev/null | wc -l) "$shortname"
  done
done | sort -n

Если вы хотите подсчитать количество слов, а не строк, используйте wc -w в приведенном выше скрипте.

Приведенный выше скрипт берет 10 лучших в каждом каталоге man, компилирует таблицу и сортирует ее по количеству строк. Он также исключает любой из пронумерованных разделов 1–8, если они НЕ существуют в вашей системе.

Сохраните и закройте файл и сделайте его исполняемым с помощью команды:

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

Скрипт Bash для поиска самой длинной справочной страницы в Linux

Число в середине указывает на раздел справочной страницы.

Чтобы узнать более подробную информацию о страницах руководства, запустите:

man man
man -k man
info man

Рекомендуется прочитать:

  • Как установить отсутствующие страницы команд Man в Ubuntu
  • Как создавать и поддерживать собственные справочные страницы

Надеюсь, это было полезно.

Статьи по данной тематике