Командная строка — это текстовый интерфейс управления компьютером: вы вводите команду с клавиатуры, программа-оболочка разбирает ее и запускает нужное действие, а результат выводится текстом. Ниже разберем, чем терминал отличается от оболочки и консоли, какие оболочки бывают в Windows, Linux и macOS, и выполним одну и ту же последовательность операций с папками и файлами в bash и PowerShell. Примеры проверены 23.09.2026: bash 5.2 в Ubuntu 24.04 и PowerShell 7.6.
Содержание
- Терминал, оболочка, консоль: в чем разница
- Какие бывают оболочки
- Как открыть командную строку
- Как устроена команда
- Базовые операции: один сценарий в bash
- Тот же сценарий в PowerShell
- Шпаргалка: одни задачи в трех оболочках
- Типичные ошибки
- Перенаправление и конвейер
- Безопасная работа
- Если не получилось
- Выводы
- Где применяется / связь с практикой
- FAQ
Терминал, оболочка, консоль: в чем разница
Эти слова часто используют как синонимы, но они называют разные части одной цепочки: окно, в котором вы печатаете, и программу, которая понимает команды.
| Термин | Что это | Примеры |
|---|---|---|
| Терминал (эмулятор терминала) | Окно-программа: принимает нажатия клавиш и рисует текст | Windows Terminal, GNOME Terminal, Terminal в macOS, iTerm2 |
| Оболочка (shell) | Интерпретатор команд: читает строку, разбирает, запускает программы | cmd.exe, PowerShell, bash, zsh |
| Консоль | Исторически — физическое устройство ввода-вывода; сегодня в быту то же, что терминал | Консоль Linux по Ctrl+Alt+F3, «консоль Windows» |
| Командная строка | Сам способ работы (CLI, command-line interface) и строка ввода с приглашением | В Windows так называется и программа cmd.exe |
Цепочка на одном действии: вы набираете ls в окне терминала -> терминал передает символы оболочке bash -> bash находит программу ls и запускает ее -> ее вывод терминал показывает на экране. Поэтому в одном терминале можно открыть разные оболочки: в Windows Terminal есть вкладки и для cmd, и для PowerShell, и для WSL с bash.
Это упрощение: в Windows «открыть командную строку» по привычке значит запустить cmd.exe в окне консоли, но и там окно и интерпретатор — разные программы.
Какие бывают оболочки
| Оболочка | Где по умолчанию | Что передается между командами | Скрипты |
|---|---|---|---|
| cmd.exe | Windows (со времен Windows NT) | Текст | .bat, .cmd |
| Windows PowerShell 5.1 | Встроена в Windows 10/11 | Объекты .NET | .ps1 |
| PowerShell 7 (pwsh) | Ставится отдельно, есть для Windows, Linux, macOS | Объекты .NET | .ps1 |
| bash | Большинство дистрибутивов Linux | Текст | .sh |
| zsh | macOS (с версии Catalina) | Текст | .sh, .zsh |
Главное практическое различие — в третьем столбце: в bash следующая команда получает строки текста и разбирает их сама, в PowerShell по конвейеру идут объекты со свойствами (имя, размер, дата).
Что выбрать для учебы. Если цель — серверы, DevOps, разработка под Linux, начинайте с bash: этот же синтаксис встретится в скриптах CI, Dockerfile и на любом сервере. Если вы администрируете Windows и Microsoft 365 — PowerShell. cmd.exe стоит знать на уровне чтения старых .bat-файлов.
Как открыть командную строку
- Windows 11: Win+X -> «Терминал» (откроется Windows Terminal, профиль по умолчанию обычно PowerShell). Классический cmd: Win+R ->
cmd-> Enter. С правами администратора: Win+X -> «Терминал (администратор)». - Linux (Ubuntu с GNOME): Ctrl+Alt+T или «Терминал» в списке приложений.
- macOS: Программы -> Утилиты -> Терминал, или Cmd+Space и ввести «Терминал».
После запуска появляется приглашение (prompt): в bash это обычно user@host:~$, в PowerShell — PS C:\Users\user>, в cmd — C:\Users\user>. Приглашение показывает текущий каталог — папку, относительно которой считаются короткие пути.
Как устроена команда
Строка команды состоит из имени, опций и аргументов: ls -l /tmp — программа ls, опция -l (подробный список), аргумент /tmp (какой каталог показать). В Windows опции cmd пишутся через слеш (dir /s), в PowerShell — через дефис и полным именем параметра (Get-ChildItem -Recurse).
Пути бывают абсолютные (от корня: /home/anna/demo, C:\Users\anna\demo) и относительные (от текущего каталога: notes/list.txt). . — текущий каталог, .. — родительский, ~ — домашний (в bash и PowerShell).
Справка всегда под рукой: man ls или ls --help в Linux, help и команда /? в cmd, Get-Help Get-ChildItem в PowerShell.
Базовые операции: один сценарий в bash
Сначала полный пример целиком. Он создает папку проекта, пишет в файл две строки, делает копию, переименовывает ее и удаляет.
cd ~
mkdir -p demo/notes
cd demo
pwd
echo "первая строка" > notes/list.txt
echo "вторая строка" >> notes/list.txt
cat notes/list.txt
cp notes/list.txt notes/list-copy.txt
mv notes/list-copy.txt notes/backup.txt
ls notes
rm notes/backup.txt
ls notes
Вывод (запуск от root в контейнере, поэтому домашний каталог /root; у обычного пользователя будет /home/<имя>/demo):
/root/demo
первая строка
вторая строка
backup.txt
list.txt
list.txt
Разбор: mkdir -p создает вложенные папки и не ругается, если они уже есть; > перезаписывает файл, >> дописывает в конец; mv и перемещает, и переименовывает.
Тот же сценарий в PowerShell
Set-Location ~
New-Item -ItemType Directory -Path demo/notes -Force | Out-Null
Set-Location demo
(Get-Location).Path
Set-Content -Path notes/list.txt -Value "первая строка"
Add-Content -Path notes/list.txt -Value "вторая строка"
Get-Content notes/list.txt
Copy-Item notes/list.txt notes/list-copy.txt
Rename-Item notes/list-copy.txt backup.txt
(Get-ChildItem notes).Name
Remove-Item notes/backup.txt -WhatIf
Remove-Item notes/backup.txt
(Get-ChildItem notes).Name
Вывод в PowerShell 7.6 (в Windows путь будет вида C:\Users\<имя>\demo):
/root/demo
первая строка
вторая строка
backup.txt
list.txt
What if: Performing the operation "Remove File" on target "/root/demo/notes/backup.txt".
list.txt
С -WhatIf PowerShell только сообщает, что сделал бы, и ничего не удаляет — страховка перед массовыми операциями. Запись (Get-ChildItem notes).Name берет у объектов-файлов одно свойство Name — это и есть работа с объектами вместо текста.
Шпаргалка: одни задачи в трех оболочках
| Задача | bash (Linux, macOS) | cmd (Windows) | PowerShell |
|---|---|---|---|
| Где я | pwd |
cd без аргументов |
Get-Location |
| Список файлов | ls -l |
dir |
Get-ChildItem |
| Перейти в папку | cd путь |
cd путь (на другой диск: cd /d D:\путь) |
Set-Location путь |
| Создать папку | mkdir -p a/b |
mkdir a\b |
New-Item -ItemType Directory a/b |
| Показать файл | cat файл |
type файл |
Get-Content файл |
| Копировать | cp a b |
copy a b |
Copy-Item a b |
| Переместить/переименовать | mv a b |
move a b / ren a b |
Move-Item / Rename-Item |
| Удалить файл | rm файл |
del файл |
Remove-Item файл |
| Удалить папку с содержимым | rm -r папка |
rmdir /s папка |
Remove-Item -Recurse папка |
| Очистить экран | clear |
cls |
Clear-Host |
| Найти программу | which имя |
where имя |
Get-Command имя |
В Windows PowerShell для привычки есть псевдонимы ls, dir, cat, cp, rm, но это те же командлеты с другими параметрами: rm -rf там не сработает. В PowerShell 7 для Linux и macOS псевдонимов ls, cat, rm нет, чтобы не перекрывать системные программы; dir и cd остались.
Типичные ошибки
Пробел в имени без кавычек. Оболочка делит строку по пробелам, поэтому имя из двух слов превращается в два аргумента.
mkdir My Docs
ls
Docs
My
Создались две папки. Попытка cd My Docs дает bash: cd: too many arguments. Исправление — кавычки: mkdir "My Docs" и cd "My Docs". Это же правило действует в cmd и PowerShell.
Опечатка в имени команды. Ввод lss в bash выдает bash: lss: command not found. Проверьте написание, а если программа должна быть установлена — найдите ее через which (bash) или where (cmd).
Удаление без корзины. rm, del и Remove-Item удаляют файлы сразу, в корзину они не попадают. Перед удалением по маске выполните pwd и посмотрите список (ls *.log), в bash используйте rm -i для подтверждения, в PowerShell — -WhatIf.
Перенаправление и конвейер
Сила командной строки — в сочетании маленьких команд. Символ | (конвейер) передает вывод одной команды на вход другой, > сохраняет вывод в файл.
printf 'error: disk\ninfo: ok\nerror: net\n' > app.log
grep error app.log | wc -l
grep error app.log > errors.txt
cat errors.txt
2
error: disk
error: net
grep отбирает строки со словом error, wc -l считает их, а второй вызов сохраняет найденное в отдельный файл. В PowerShell аналог — Select-String error app.log.
Безопасная работа
- Не выполняйте вслепую чужие команды с
sudo,rm -rи «скачать скрипт и сразу запустить» — сначала разберите каждую часть. - Права администратора (
sudo, «Терминал (администратор)») — только для операции, которой они нужны. - Перед правкой системного файла делайте копию:
cp config.conf config.conf.bak.
Если не получилось
| Симптом | Причина | Что делать |
|---|---|---|
command not found / «не является внутренней или внешней командой» |
Опечатка или программа не установлена/не в PATH | Проверить написание, which/where, установить программу |
Permission denied / «Отказано в доступе» |
Нет прав на файл или папку | Проверить владельца и права (ls -l); права администратора — только если операция действительно системная |
No such file or directory |
Неверный путь или вы в другом каталоге | pwd, затем ls и проверка пути; имена в Linux чувствительны к регистру |
Скрипт .ps1 не запускается в Windows |
Политика выполнения скриптов | Get-ExecutionPolicy; менять политику только для текущего пользователя и только для доверенных скриптов |
Выводы
- Командная строка — текстовый интерфейс; терминал — окно, оболочка (bash, zsh, cmd, PowerShell) — интерпретатор команд внутри него.
- bash и cmd передают между командами текст, PowerShell — объекты со свойствами.
- Базовые операции (где я, список, перейти, создать, копировать, переместить, удалить) есть во всех оболочках, отличаются названия и синтаксис опций.
- Имена с пробелами — в кавычках; удаление из командной строки идет мимо корзины, поэтому перед ним проверяют
pwdи список файлов. - Для работы с серверами и DevOps начинают с bash, для администрирования Windows — с PowerShell.
Где применяется / связь с практикой
Освойте тему на практике
Командная строка — ежедневный инструмент системного администратора, DevOps-инженера и бэкенд-разработчика: подключение к серверу по SSH, установка пакетов, просмотр логов, автоматизация скриптами. Если хотите системно освоить Linux от навигации и прав доступа до процессов, сети и bash-скриптов, посмотрите программу курса «Администратор Linux. Базовый». Разобрать отдельные темы с преподавателями можно на бесплатных открытых уроках Otus.
FAQ
Можно ли в Windows работать с bash?
Да, через WSL (Windows Subsystem for Linux): внутри запускается настоящий дистрибутив Linux с bash, его вкладка открывается в Windows Terminal. Также bash входит в состав Git for Windows (Git Bash).
Чем Windows PowerShell 5.1 отличается от PowerShell 7?
5.1 встроена в Windows и работает на .NET Framework, новые функции в нее не добавляют. PowerShell 7 — кроссплатформенная версия на современном .NET, ставится отдельно и может работать рядом с 5.1.
Команды в Linux чувствительны к регистру?
Да, в bash ls и LS — разные имена, а Notes.txt и notes.txt — разные файлы. В cmd и PowerShell на Windows регистр в именах команд и файлов по умолчанию не различается.



