Как найти самую длинную справочную страницу в 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
- Как создавать и поддерживать собственные справочные страницы
Надеюсь, это было полезно.