Skip to content
Назад в блог

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

3 мин. чтения
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).

Автор

Fullstack Engineer

В коммерческой разработке с 2011 года — больше 15 лет. Автор двух SaaS-продуктов: TeleGo.io и LingvoHabit.com. Статьи здесь выросли из реальной клиентской и продуктовой работы.

Подробнее об автореНаписать в Telegram

Похожие статьи

NUMBER BASE CONVERTER
NUMBER BASE CONVERTER · '26

Как компьютер представляет числа: биты, hex и IEEE 754

Почему одно число записывают как 45, 101101 и 2D, откуда взялись двоичная, восьмеричная и hex-системы и чем IEEE 754 отличается от них.

#Number Base Converter #IEEE 754 #двоичная система #шестнадцатеричная система #дополнительный код #римские цифры #ивритская гематрия #греческие цифры #история математики
5 мин. чтения
ИСТОРИЯ ФОРМАТИРОВАНИЯ КОДА
ИСТОРИЯ ФОРМАТИРОВАНИЯ КОДА · '26

Почему разработчики до сих пор спорят о форматировании

Краткая история соглашений о форматировании и точные границы beautify/minify для HTML и CSS в нашем локальном браузерном инструменте.

#история форматирования кода #Prettier #indent style #K&R vs Allman #код-стайл #табы против пробелов
2 мин. чтения
GZIP VS BROTLI
GZIP VS BROTLI · '26

Как патенты на LZW привели к gzip, а веб к Brotli

История gzip, DEFLATE и Brotli, устройство двух форматов сжатия и практический выбор между размером результата, скоростью кодирования и совместимостью.

#GZip vs Brotli #история сжатия данных #Jean-loup Gailly #Brotli Google #Deflate алгоритм #LZ77 Huffman
5 мин. чтения