Та же в целом задача, что в главе 09, но выросшая из совсем другой родословной — не из Unix, а из MS-DOS, и это заметно на каждом шагу: другие команды, другая логика путей, другая модель дисков.
cmd.exe — прямой наследник интерпретатора команд MS-DOS (COMMAND.COM) —
родословная восходит к концу 1970-х – началу 1980-х, задолго до Windows в привычном виде.
Сохраняется в современной Windows в основном ради обратной совместимости со старыми
скриптами и привычками — для нового серьёзного скриптинга Microsoft продвигает PowerShell
(глава 11), но CMD никуда не делся и до сих пор встречается на практике.
| Задача | macOS/Unix | Windows CMD |
|---|---|---|
| Список файлов | ls | dir |
| Сменить папку | cd | cd |
| Скопировать файл | cp | copy |
| Переместить/переименовать | mv | move / ren |
| Удалить файл | rm | del |
| Создать папку | mkdir | md (или mkdir) |
| Показать содержимое файла | cat | type |
| Очистить экран | clear | cls |
Windows традиционно использует обратный слэш \ как разделитель в путях
(C:\Users\Tariel\Documents), а не прямой слэш Unix-систем — хотя
современный CMD во многих случаях терпимо относится и к прямому слэшу. Более глубокое
отличие — сама структура: вместо единого корня /, к которому подключены все
диски (как в macOS/Linux), Windows использует отдельные буквы дисков (C:,
D:) — у каждого диска собственное дерево папок, не объединённое в общую
структуру автоматически.
Здесь CMD и Unix-оболочки заметно ближе друг к другу, чем в вопросе путей: символы-маски
* и ? работают похожим образом для выбора группы файлов,
перенаправление вывода > и >> и конвейер |
из главы 09 концептуально работают точно так же — вывод одной команды можно направить в
файл или передать на вход другой команде.
В CMD нет прямого аналога простой модели "владелец/группа/остальные" из главы 02 и 09 —
файловая система NTFS в Windows использует более сложную модель списков контроля доступа
(ACL), где для каждого файла можно назначить разные права для произвольного числа
конкретных пользователей и групп по отдельности, а не только для трёх фиксированных
категорий. Управляется это через команду icacls или через графический
интерфейс — тема, выходящая за рамки базового обзора этой главы, но стоит знать, что
прямой аналогии с восьмеричными правами Unix здесь нет.
Пакетные файлы (.bat) — способ CMD выполнять последовательности команд как скрипт, с
переменными (%переменная%), условиями (IF) и — буквально —
командой GOTO для перехода между метками в файле, той самой, что подробно
разбиралась в главе 06 применительно к BASIC. В отличие от современных языков (включая
Python блока 3), batch-скрипты CMD до сих пор во многом полагаются именно на эту
старую, некогда раскритикованную модель управления потоком — практический пример того,
что старые идеи не всегда полностью исчезают, даже когда индустрия в целом от них
отходит.
Команда echo %PATH% показывает список папок, в которых система ищет
исполняемые программы при вводе их имени без полного пути — та самая переменная PATH,
которая определяет, сработает ли команда вроде python из любой папки после
установки Python (тема главы 13), или система ответит "команда не найдена".
Следующая глава — PowerShell, современная альтернатива CMD от той же Microsoft, но построенная на принципиально другой идее: команды работают не с текстом, а с полноценными объектами данных.
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.