惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
LINUX DO - 热门话题
S
Secure Thoughts
TaoSecurity Blog
TaoSecurity Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threat Research - Cisco Blogs
AI
AI
B
Blog RSS Feed
S
Schneier on Security
雷峰网
雷峰网
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Cloudbric
Cloudbric
L
LINUX DO - 最新话题
罗磊的独立博客
有赞技术团队
有赞技术团队
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
博客园 - Franky
Attack and Defense Labs
Attack and Defense Labs
The Cloudflare Blog
Webroot Blog
Webroot Blog
Last Week in AI
Last Week in AI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 叶小钗
美团技术团队
L
Lohrmann on Cybersecurity
T
The Blog of Author Tim Ferriss
The Last Watchdog
The Last Watchdog
T
Troy Hunt's Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
Know Your Adversary
Know Your Adversary
O
OpenAI News
博客园 - 【当耐特】
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cybersecurity and Infrastructure Security Agency CISA
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
PCI Perspectives
PCI Perspectives
H
Heimdal Security Blog
I
InfoQ
GbyAI
GbyAI
T
Threatpost
C
Cisco Blogs

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Man pages, которыми хочется пользоваться: как сделать их удобными
kmoseenk (OT · 2026-04-29 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение6 мин

Охват и читатели404

Туториал

Перевод

В прошлом году я много работал над Git man page, поэтому начал больше думать о том, что делает man-страницу (man page) по-настоящему хорошей.

Я провёл немало времени, составляя шпаргалки для инструментов (tcpdump, git, dig и др.), у которых man-страница является основной документацией. Во многом потому, что мне часто сложно ориентироваться в man-страницах, чтобы быстро найти нужную информацию.

В последнее время я думаю — а может ли сама man-страница содержать отличную шпаргалку? Что вообще может сделать man-страницу более удобной? Я пока только в начале этих размышлений, но захотел написать о некоторых моментах.

Если Linux и терминал пока даются с трудом, подготовительный курс «Linux для начинающих» поможет разобраться с базовыми командами и консольными инструментами — тем самым фундаментом, на котором держится работа с man-страницами.

Я спросил у людей в Mastodon про их любимые man-страницы и обнаружил несколько интересных решений.

Сводка опций (OPTIONS SUMMARY)

Если вы читали много man-страниц, то наверняка видели в разделе SYNOPSIS что-то вроде этого — когда перечисляется почти весь алфавит, ориентироваться становится сложно

ls [-@ABCFGHILOPRSTUWabcdefghiklmnopqrstuvwxy1%,]

grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz]

В man-странице rsync есть решение, которое я раньше не встречал: раздел SYNOPSIS там максимально лаконичный, например:

 Local:
     rsync [OPTION...] SRC... [DEST]

А затем идёт раздел «OPTIONS SUMMARY» с однострочным описанием каждой опции:

--verbose, -v            increase verbosity
--info=FLAGS             fine-grained informational verbosity
--debug=FLAGS            fine-grained debug verbosity
--stderr=e|a|c           change stderr output mode (default: errors)
--quiet, -q              suppress non-error messages
--no-motd                suppress daemon-mode MOTD

Позже идёт привычный раздел OPTIONS с полным описанием каждой опции.

Раздел OPTIONS, сгруппированный по категориям

В man-странице strace опции сгруппированы по категориям (например, «General», «Startup», «Tracing», «Filtering», «Output Format»), а не по алфавиту.

В качестве эксперимента я попробовал взять man-страницу grep и сделать в ней раздел «OPTIONS SUMMARY», сгруппированный по категориям — результат можно посмотреть на github. Не уверен, что сам думаю об этом результате, но это был интересный эксперимент. Когда я это делал, я думал о том, как никогда не запомню название опции -l в grep. Каждый раз ее поиск в man-странице занимает целую вечность, и я пытался понять, какая структура помогла бы ускорить процесс. Возможно, категории?

Шпаргалка

Пара человек указали мне на набор Perl man-страниц (perlfunc, perlre и т. д.), и среди них я заметил man perlcheat, где есть разделы-шпаргалки вроде такого:

 SYNTAX
 foreach (LIST) { }     for (a;b;c) { }
 while   (e) { }        until (e)   { }
 if      (e) { } elsif (e) { } else { }
 unless  (e) { } elsif (e) { } else { }
 given   (e) { when (e) {} default {} }

Мне кажется, это очень круто, и я задумался, есть ли другие способы делать компактные ASCII-шпаргалки шириной 80 символов, которые можно было бы использовать в man-страницах.

Сила примеров

Часто мне отвечали примерно так: «Мне нравится любая man-страница, где есть примеры». Кто-то упомянул man-страницы OpenBSD, и в openbsd tail man-странице в конце есть примеры ровно двух способов, которыми я сам пользуюсь tail.

Мне кажется, чаще всего я видел раздел EXAMPLES в конце man-страницы, но некоторые man-страницы, например уже упомянутая man-страница rsync, начинаются именно с примеров. Когда я работал над man-страницами git-add и git rebase, я тоже помещал короткий пример в начало.

Оглавление и ссылки между разделами

Это не свойство самой man-страницы как таковой, но одна из проблем man-страниц в терминале в том, что по ним трудно понять, какие вообще разделы в них есть.

Когда мы работали над man-страницами Git, мы с Мари добавили оглавление на боковую панель HTML-версий man-страниц, размещённых на сайте Git.

Ещё я хотел бы в какой-то момент добавить больше гиперссылок в HTML-версии man-страниц Git, чтобы, например, можно было нажать на «INCOMPATIBLE OPTIONS» и сразу перейти к нужному разделу. В проекте Git такие ссылки добавлять очень просто, потому что man-страницы Git генерируются с помощью AsciiDoc.

Мне кажется, что добавление оглавления и внутренних гиперссылок — это хороший компромисс: так можно немного улучшить формат man-страниц, по крайней мере в их HTML-версии, не поддерживая при этом полностью отдельный формат документации. Хотя для этого, конечно, нужна цепочка инструментов вроде той, что используется у Git на базе AsciiDoc.

Было бы здорово, если бы существовала какая-то универсальная система, которая позволяла бы легко находить конкретную опцию в man-странице: например, «что делает -a?». Лучший приём, который я знаю, — искать в просмотрщике man-страницы что-то вроде ^ *-a, но я сам всё время забываю так делать и вместо этого просто просматриваю каждое вхождение -a в man-странице, пока не найду то, что мне нужно.

Примеры для каждой опции

В man-странице curl есть примеры для каждой опции, а в HTML-версии ещё и добавлено оглавление, чтобы было проще перейти именно к той опции, которая вас интересует.

Например, по примеру для --cert сразу понятно, что, скорее всего, вам также нужно передать опцию --key, вот так:

curl --cert certfile --key keyfile https://example.com

Реализовано это так: для каждой опции есть отдельный файл (https://github.com/curl/curl/blob/dc08922a61efe546b318daf964514ffbf41583 25/docs/cmdline-opts/append.md), и в этом файле предусмотрено поле «Example».

Оформление данных в виде таблицы

Довольно много людей сказали, что их любимая man-страница — это man ascii, и выглядит она вот так:

Oct Dec Hex Char ─────────────────────────────────────────── 000 0 00 NUL '\0' (null character) 001 1 01 SOH (start of heading) 002 2 02 STX (start of text) 003 3 03 ETX (end of text) 004 4 04 EOT (end of transmission) 005 5 05 ENQ (enquiry) 006 6 06 ACK (acknowledge) 007 7 07 BEL '\a' (bell) 010 8 08 BS '\b' (backspace) 011 9 09 HT '\t' (horizontal tab) 012 10 0A LF '\n' (new line)

Очевидно, man ascii — это довольно необычная man-страница, но, как мне кажется, в ней здорово то, что, помимо очевидной пользы самой ASCII-таблицы, нужную информацию в ней очень легко находить взглядом именно благодаря табличному формату. И я задумался, нет ли и в других случаях возможностей представлять информацию в man-странице в виде «таблицы», чтобы по ней было проще скользить глазами.

Подход GNU

Когда я говорю о man-страницах, часто всплывает тема, что в man-страницах GNU coreutils, например в man tail, нет примеров, в отличие от man-страниц OpenBSD, где примеры есть.

Я не буду слишком глубоко в это уходить, потому что тема, похоже, довольно политизированная, и я точно не смогу здесь отдать ей должное, но вот что, как мне кажется, соответствует действительности:

  • Проект GNU предпочитает поддерживать документацию в виде руководств «info», а не man-страниц. На этой странице прямо сказано, что «man-страницы больше не поддерживаются».

  • Есть три способа читать руководства «info»: в HTML-версии, в Emacs или с помощью отдельной утилиты info. От некоторых пользователей Emacs я слышал, что им нравится встроенный в Emacs просмотрщик info. Думаю, что отдельной утилитой info вообще мало кто пользуется.

  • Ссылка на раздел руководства info для tail находится внизу man-страницы, и в нём примеры как раз есть.

  • Раньше FSF продавал печатные книги с руководствами по программам GNU, и, возможно, иногда делает это (?) до сих пор.

После определённого уровня сложности man-страница становится по-настоящему трудной для навигации: хотя я никогда не пользовался руководством coreutils и, скорее всего, не буду, почти наверняка я предпочёл бы читать справочное руководство GNU Bash или справочное руководство по библиотеке GNU C Library в их HTML-версии, а не в формате man-страницы.

Ещё несколько вещей, смежных с man-страницами

Вот несколько инструментов, которые кажутся мне интересными:

  • В комплекте с fish shell идёт Python-скрипт, который автоматически генерирует автодополнение по табуляции на основе man-страниц.

  • tldr.sh — это поддерживаемая сообществом база примеров. Например, можно выполнить команду tldr grep. Многие говорили мне, что считают этот инструмент полезным.

  • В браузере документации Dash для Mac есть хороший просмотрщик man-страниц. Я сам по-прежнему пользуюсь просмотрщиком man-страниц в терминале, но мне нравится, что в Dash есть оглавление. Выглядит это так:

Если вам близка тема удобных инструментов, понятной документации и нормальной инженерной навигации, можно продолжить в смежных темах на бесплатных уроках. Будем разбирать не абстрактные подходы, а практику: CLI, рабочее окружение, архитектуру Kubernetes и то, как с этим жить в реальных проектах.

  • 6 мая 20:00. «Rust в деле: пишем многопользовательский чат с сервером, клиентом и CLI». Записаться

  • 7 мая 20:00. «Настройка удобного рабочего окружения для Python проекта». Записаться

  • 18 мая 20:00. «Основы Kubernetes: архитектура и абстракции». Записаться

Больше обучающих материалов смотрите в дайджесте по ИТ-инфраструктуре.