Command Explainer: как читать man-страницы и понимать Unix

Запустить команду легко. Понять, что она делает со всеми флагами — искусство. Command Explainer переводит с man на человеческий.
История man: как документировали UNIX (1971)
Когда Кен Томпсон и Деннис Ритчи писали первую версию UNIX, им нужен был способ документировать 60+ команд. Они использовали troff (наборный процессор) и создали формат man — сокращение от «manual page».
Первая man-страница была написана для команды stat в 1971 году. К 3rd Edition UNIX (1973) у каждой команды была своя страница. Формат оказался настолько удачным, что его переняли все UNIX-подобные системы, включая Linux.
Секции man — гениально простая навигация: 8 разделов покрывают всё от пользовательских команд до форматов файлов и системных вызовов. man 7 socket — не страница о команде socket, а документация о сокетах как концепции.
Философия Unix: маленькие инструменты в конвейере (1973)
Man-страницы обретают смысл только рядом с идеей, которую они документируют. Дуг Макилрой (Doug McIlroy), руководивший в Bell Labs группой, стоявшей за UNIX, сформулировал её так: «Пишите программы, которые делают одну вещь и делают её хорошо. Пишите программы, которые работают вместе». В 1973 году он протолкнул в UNIX пайпы — тот самый |, который направляет вывод одной команды прямо на вход следующей.
Именно поэтому команды выглядят так, как выглядят. grep фильтрует, sort сортирует, awk перекраивает, tar упаковывает — каждая маленькая и однозадачная, а сила рождается из их сцепления: ps aux | grep node | awk '{print $2}'. Прочитать длинную команду — это на самом деле прочитать маленький конвейер из однозадачных инструментов, что этот разборщик и раскрывает.
Как работает разбор команд
У Command Explainer две вкладки, и всё работает локально в браузере — никакие man-серверы не запрашиваются.
Explain a command — вставьте любую команду и получите разбор по флагам:
- Умный токенизатор — учитывает
'одинарные'и"двойные"кавычки, поэтому-name "*.log"остаётся одним аргументом - Пайпы и операторы — разбивает по
|,&&,||,;и редиректам вроде>, объясняя каждую команду и что делает оператор - Каждая часть подписана — сама команда, склеенные короткие флаги (
-xzvf→-x -z -v -f), опции со значением (-name,-mtime,-C) и каждый операнд, с цветовой маркировкой по роли - Неизвестные флаги помечаются — то, чего нет в базе, обозначается, а не додумывается
Command cheatsheet — поисковый справочник по десяткам повседневных команд в восьми категориях (файлы, поиск, права и пользователи, архивы, удалённый доступ и передача, сеть, процессы, текст). У каждой команды — назначение, частые опции и реальные примеры; кнопка Explain у любого примера отправляет его прямо в разборщик.
Быстрый старт: откройте инструмент → введите find . -name "*.log" -mtime +7 -delete → увидите find = поиск по дереву каталогов, -name "*.log" = совпадение по шаблону, -mtime +7 = изменён более 7 дней назад, -delete = удалить каждое совпадение → проверьте, что хотели именно этого, перед запуском.
Похожие инструменты
Частые вопросы
Когда появились man-страницы?
Первая man-страница была написана в 1971 году для команды stat в 1st Edition UNIX Деннисом Ритчи и Кеном Томпсоном. Изначально документация хранилась в виде набора troff-файлов. Формат man (man — сокращение от manual) стал стандартом UNIX и остаётся им до сих пор.
Что означают секции man?
man делится на 8 секций: 1 — пользовательские команды (ls, cp), 2 — системные вызовы (open, read), 3 — библиотечные функции (printf, malloc), 4 — устройства (/dev/null), 5 — форматы файлов (/etc/passwd), 6 — игры, 7 — прочее, 8 — административные команды (fdisk, mount). Например, man 5 crontab — формат файла crontab.
Что такое опция --help?
Флаг --help (или -h) — краткая встроенная справка, показывающая синтаксис команды, основные опции и примеры. В отличие от man, --help работает без запуска пейджера и показывает только самое важное. POSIX требует поддержки --help для всех утилит.
Как читать синтаксис команды в man?
Стандартные обозначения: квадратные скобки [] — опциональные аргументы, угловые скобки <> — обязательные, a|b — выбор одного из (или), многоточие ... — повторение. Пример: cp [-r] <source> <dest> означает, что -r опционален, source и dest обязательны.
Кто написал самые известные Unix-команды?
ls, cp, rm, mkdir, grep, sh — Кен Томпсон (1971). awk — Альфред Ахо, Питер Вайнбергер, Брайан Керниган (1977), название — из их инициалов. sed — Ли Макмахон (1974). tar впервые появился в Unix V7 (1979); GNU tar позже написал Джон Гилмор. find — Дик Хейт (1975, PWB/UNIX). ssh — Тату Илонен (1995, SSH-1).
Автор
Alex RelFullstack Engineer
В коммерческой разработке с 2011 года — больше 15 лет. Автор двух SaaS-продуктов: TeleGo.io и LingvoHabit.com. Статьи здесь выросли из реальной клиентской и продуктовой работы.



