tariel.ge › Полезное: бесплатные книги › Программирование: от нулей и единиц до PythonБесплатно · автор Тариел Бежанидзе
← Учебник по программированию ЛИСТ 10БЛОК 2 — КОМАНДНАЯ СТРОКАРЕВ. 1
Глава 10 · Командная строка: три системы

Windows CMD: команды и отличия от Unix-мира

Та же в целом задача, что в главе 09, но выросшая из совсем другой родословной — не из Unix, а из MS-DOS, и это заметно на каждом шагу: другие команды, другая логика путей, другая модель дисков.

Родословная CMD

cmd.exe — прямой наследник интерпретатора команд MS-DOS (COMMAND.COM) — родословная восходит к концу 1970-х – началу 1980-х, задолго до Windows в привычном виде. Сохраняется в современной Windows в основном ради обратной совместимости со старыми скриптами и привычками — для нового серьёзного скриптинга Microsoft продвигает PowerShell (глава 11), но CMD никуда не делся и до сих пор встречается на практике.

Таблица соответствия командам из главы 09

ЗадачаmacOS/UnixWindows CMD
Список файловlsdir
Сменить папкуcdcd
Скопировать файлcpcopy
Переместить/переименоватьmvmove / ren
Удалить файлrmdel
Создать папкуmkdirmd (или mkdir)
Показать содержимое файлаcattype
Очистить экранclearcls

Пути: обратный слэш и буквы дисков

Ключевое отличие от Unix-мира главы 09

Windows традиционно использует обратный слэш \ как разделитель в путях (C:\Users\Tariel\Documents), а не прямой слэш Unix-систем — хотя современный CMD во многих случаях терпимо относится и к прямому слэшу. Более глубокое отличие — сама структура: вместо единого корня /, к которому подключены все диски (как в macOS/Linux), Windows использует отдельные буквы дисков (C:, D:) — у каждого диска собственное дерево папок, не объединённое в общую структуру автоматически.

C:\Users\Tariel> D: # переключиться на диск D:
D:\> cd /d C:\Users\Tariel # сменить и диск, и папку одной командой

Подстановочные знаки, перенаправление, конвейер — знакомая логика

Здесь CMD и Unix-оболочки заметно ближе друг к другу, чем в вопросе путей: символы-маски * и ? работают похожим образом для выбора группы файлов, перенаправление вывода > и >> и конвейер | из главы 09 концептуально работают точно так же — вывод одной команды можно направить в файл или передать на вход другой команде.

Права доступа устроены совсем иначе

В CMD нет прямого аналога простой модели "владелец/группа/остальные" из главы 02 и 09 — файловая система NTFS в Windows использует более сложную модель списков контроля доступа (ACL), где для каждого файла можно назначить разные права для произвольного числа конкретных пользователей и групп по отдельности, а не только для трёх фиксированных категорий. Управляется это через команду icacls или через графический интерфейс — тема, выходящая за рамки базового обзора этой главы, но стоит знать, что прямой аналогии с восьмеричными правами Unix здесь нет.

Batch-файлы — скриптинг CMD, буквально с GOTO из главы 06

Неожиданное возвращение GOTO

Пакетные файлы (.bat) — способ CMD выполнять последовательности команд как скрипт, с переменными (%переменная%), условиями (IF) и — буквально — командой GOTO для перехода между метками в файле, той самой, что подробно разбиралась в главе 06 применительно к BASIC. В отличие от современных языков (включая Python блока 3), batch-скрипты CMD до сих пор во многом полагаются именно на эту старую, некогда раскритикованную модель управления потоком — практический пример того, что старые идеи не всегда полностью исчезают, даже когда индустрия в целом от них отходит.

Переменные окружения — практическое значение уже сейчас

Команда echo %PATH% показывает список папок, в которых система ищет исполняемые программы при вводе их имени без полного пути — та самая переменная PATH, которая определяет, сработает ли команда вроде python из любой папки после установки Python (тема главы 13), или система ответит "команда не найдена".

Что дальше

Следующая глава — PowerShell, современная альтернатива CMD от той же Microsoft, но построенная на принципиально другой идее: команды работают не с текстом, а с полноценными объектами данных.

Глава10 — Windows CMD
Блок2 — Командная строка
Далее11 — PowerShell
СтатусГотово · рев. 1
Предыдущая глава ← 09 · Терминал macOS Следующая глава 11 · PowerShell →

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.