Skip to content

Глава 0.3: Терминал и командная строка

Базовые команды, навигация, почему это важно


Зачем разработчику терминал?

Ты можешь подумать: "Зачем мне эта чёрная консоль, если есть красивые интерфейсы?"

Вот почему терминал необходим PHP-разработчику:

┌─────────────────────────────────────────────────────────────────┐
│                 ИНСТРУМЕНТЫ, КОТОРЫЕ РАБОТАЮТ                   │
│                 ТОЛЬКО ЧЕРЕЗ ТЕРМИНАЛ                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   📦 Composer      — менеджер пакетов PHP                       │
│   🎨 Laravel       — artisan команды                            │
│   📝 Git           — контроль версий                            │
│   🐳 Docker        — контейнеризация                            │
│   📡 SSH           — подключение к серверам                     │
│   🔧 npm/node      — frontend инструменты                       │
│   🗄️ MySQL         — работа с базой данных                      │
│   🧪 PHPUnit       — тестирование                               │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Если ты не умеешь работать с терминалом — ты не сможешь:

  • Установить Laravel
  • Управлять зависимостями через Composer
  • Использовать Git
  • Деплоить проекты на сервер

Терминал — это не опция. Это обязательный навык.


1. Какой терминал использовать?

Windows

ТерминалОписаниеРекомендация
CMDСтарый, ограниченный❌ Не рекомендую
PowerShellМощный, встроенный✅ Годится
Git BashUnix-команды на Windows⭐ Рекомендую
Windows TerminalСовременный, красивый⭐ Лучший выбор
WSLПолноценный Linux⭐ Для продвинутых

Моя рекомендация: Установи Windows Terminal из Microsoft Store и используй Git Bash внутри него.

macOS

ТерминалОписание
Terminal.appВстроенный, достаточный
iTerm2Продвинутый, с фишками

Оболочка по умолчанию — zsh (с macOS Catalina).

Linux

Любой эмулятор терминала + bash или zsh.


2. Установка Git Bash (Windows)

Git Bash даёт тебе Unix-команды на Windows. Это важно, потому что большинство туториалов написаны под Linux/Mac.

Шаг 1: Скачай Git

  1. Перейди на https://git-scm.com/downloads
  2. Скачай версию для Windows
  3. Запусти установщик

Шаг 2: Настройки при установке

Оставь всё по умолчанию, кроме:

Select Components:
✅ Git Bash Here (добавляет в контекстное меню)
✅ Git GUI Here

Choosing the default editor:
→ Выбери "Use Visual Studio Code as Git's default editor"

Adjusting your PATH:
→ "Git from the command line and also from 3rd-party software"

Choosing HTTPS transport backend:
→ "Use the OpenSSL library"

Line ending conversions:
→ "Checkout Windows-style, commit Unix-style line endings"

Шаг 3: Проверь установку

Открой Git Bash (найди в меню Пуск) и выполни:

bash
git --version

Должно показать что-то вроде:

git version 2.43.0.windows.1

3. Установка Windows Terminal

Шаг 1: Установка

  1. Открой Microsoft Store
  2. Найди "Windows Terminal"
  3. Установи

Шаг 2: Настрой Git Bash как профиль

  1. Открой Windows Terminal
  2. Нажми стрелку вниз рядом с вкладками → Параметры
  3. Слева: Добавить новый профильНовый пустой профиль
  4. Заполни:
    • Имя: Git Bash
    • Командная строка: C:\Program Files\Git\bin\bash.exe
    • Начальный каталог: %USERPROFILE%
    • Значок: C:\Program Files\Git\mingw64\share\git\git-for-windows.ico
  5. Сохрани

Шаг 3: Сделай Git Bash по умолчанию

В настройках: ЗапускПрофиль по умолчаниюGit Bash


4. Анатомия терминала

Когда ты открываешь терминал, ты видишь приглашение (prompt):

bash
user@computer:~/projects$

         └── $ означает "готов к вводу"

        └── Текущая директория (~ = домашняя папка)

     └── Имя компьютера

└── Имя пользователя

В Git Bash на Windows:

bash
username@DESKTOP-ABC123 MINGW64 ~/projects
$

Важно: Когда в туториалах пишут команду, символ $ — это просто обозначение приглашения. Его не нужно вводить.

bash
# В туториале написано:
$ php -v

# Ты вводишь только:
php -v

5. Файловая система: как компьютер хранит файлы

Прежде чем учить команды, нужно понять структуру файловой системы.

Windows

C:\
├── Users\
│   └── YourName\
│       ├── Desktop\
│       ├── Documents\
│       └── Downloads\
├── Program Files\
├── Windows\
└── laragon\
    └── www\
        └── my-project\

Разделитель папок: \ (обратный слэш)

Linux/Mac (и Git Bash)

/
├── home/
│   └── username/
│       ├── Desktop/
│       ├── Documents/
│       └── projects/
├── var/
│   └── www/
├── etc/
└── usr/

Разделитель папок: / (прямой слэш)

Важные обозначения

СимволЗначениеПример
/Корень файловой системы/home/user
~Домашняя папка пользователя~/projects = /home/user/projects
.Текущая директория./file.php = файл в текущей папке
..Родительская директория../ = на уровень выше

6. Навигация: перемещение по папкам

pwd — где я сейчас?

Print Working Directory — показывает текущую директорию.

bash
$ pwd
/home/user/projects

ls — что здесь есть?

List — показывает содержимое директории.

bash
$ ls
file1.txt  file2.php  folder1  folder2

Полезные флаги ls:

bash
# Подробный список (права, размер, дата)
$ ls -l
-rw-r--r-- 1 user user  1234 Jan 27 10:00 file1.txt
drwxr-xr-x 2 user user  4096 Jan 27 09:00 folder1

# Показать скрытые файлы (начинаются с точки)
$ ls -a
.  ..  .gitignore  .env  file1.txt  folder1

# Комбинация: подробно + скрытые
$ ls -la

# Человекочитаемые размеры (KB, MB)
$ ls -lh

Расшифровка ls -l:

-rw-r--r-- 1 user group 1234 Jan 27 10:00 file.txt
│├──┤├─┤├─┤ │  │    │     │       │         │
││   │   │  │  │    │     │       │         └── Имя файла
││   │   │  │  │    │     │       └── Дата изменения
││   │   │  │  │    │     └── Размер в байтах
││   │   │  │  │    └── Группа владельца
││   │   │  │  └── Владелец
││   │   │  └── Количество ссылок
││   │   └── Права для остальных (r=read, w=write, x=execute)
││   └── Права для группы
│└── Права для владельца
└── Тип (- = файл, d = директория)

cd — перейти в папку

Change Directory — переход в другую директорию.

bash
# Перейти в папку projects
$ cd projects

# Перейти на уровень выше
$ cd ..

# Перейти на два уровня выше
$ cd ../..

# Перейти в домашнюю папку
$ cd ~
$ cd          # Просто cd без аргументов тоже работает

# Перейти по абсолютному пути
$ cd /var/www/html

# Перейти в предыдущую директорию
$ cd -

Практика навигации

bash
# Допустим, ты в домашней папке
$ pwd
/home/user

# Посмотри, что есть
$ ls
Desktop  Documents  Downloads  projects

# Перейди в projects
$ cd projects

# Проверь, где ты
$ pwd
/home/user/projects

# Посмотри содержимое
$ ls
calculator  phonebook

# Перейди в calculator
$ cd calculator

# Вернись назад
$ cd ..

# Или сразу домой
$ cd ~

7. Работа с файлами и папками

mkdir — создать папку

Make Directory

bash
# Создать папку
$ mkdir my-project

# Создать вложенные папки (с флагом -p)
$ mkdir -p projects/php/calculator
# Создаст projects, внутри php, внутри calculator

touch — создать файл

bash
# Создать пустой файл
$ touch index.php

# Создать несколько файлов
$ touch file1.php file2.php file3.php

cp — копировать

Copy

bash
# Копировать файл
$ cp file.txt copy.txt

# Копировать файл в папку
$ cp file.txt folder/

# Копировать папку (с флагом -r, recursive)
$ cp -r folder1 folder2

mv — переместить/переименовать

Move

bash
# Переместить файл в папку
$ mv file.txt folder/

# Переименовать файл
$ mv old-name.txt new-name.txt

# Переместить и переименовать
$ mv file.txt folder/newname.txt

rm — удалить

Remove

bash
# Удалить файл
$ rm file.txt

# Удалить папку (пустую)
$ rmdir folder

# Удалить папку с содержимым (ОСТОРОЖНО!)
$ rm -r folder

# Удалить с подтверждением
$ rm -i file.txt

# Принудительно, без вопросов (ОЧЕНЬ ОСТОРОЖНО!)
$ rm -rf folder

⚠️ ВНИМАНИЕ: rm удаляет безвозвратно. Нет корзины, нет отмены. Дважды проверяй команду перед выполнением!

bash
# ЭТО УДАЛИТ ВСЮ СИСТЕМУ (никогда не делай!)
$ rm -rf /

# Поэтому всегда проверяй путь:
$ rm -rf ./folder    # Точка в начале = текущая папка, безопаснее

8. Просмотр содержимого файлов

cat — показать содержимое

bash
$ cat file.txt
Привет, это содержимое файла.
Вторая строка.

head / tail — начало / конец файла

bash
# Первые 10 строк
$ head file.txt

# Первые 5 строк
$ head -n 5 file.txt

# Последние 10 строк
$ tail file.txt

# Последние 20 строк
$ tail -n 20 file.txt

# Следить за файлом в реальном времени (логи!)
$ tail -f /var/log/apache2/error.log

less — постраничный просмотр

bash
$ less large-file.txt

Управление в less:

  • Space — следующая страница
  • b — предыдущая страница
  • /text — поиск "text"
  • n — следующее совпадение
  • q — выход

9. Поиск

find — поиск файлов

bash
# Найти все PHP-файлы в текущей папке и подпапках
$ find . -name "*.php"

# Найти файл по имени
$ find . -name "index.php"

# Найти папки
$ find . -type d -name "config"

# Найти файлы больше 10MB
$ find . -size +10M

grep — поиск текста в файлах

bash
# Найти строку в файле
$ grep "function" file.php

# Поиск во всех PHP-файлах
$ grep "echo" *.php

# Рекурсивный поиск (во всех подпапках)
$ grep -r "password" .

# Показать номера строк
$ grep -n "TODO" *.php

# Игнорировать регистр
$ grep -i "error" log.txt

10. Редактирование файлов

nano — простой редактор

bash
$ nano file.txt
┌────────────────────────────────────────────────────────────┐
│  GNU nano 6.2                    file.txt                  │
├────────────────────────────────────────────────────────────┤
│                                                            │
│ Тут ты редактируешь текст                                  │
│                                                            │
│                                                            │
├────────────────────────────────────────────────────────────┤
│ ^G Help  ^O Write Out  ^W Where Is  ^K Cut    ^X Exit      │
└────────────────────────────────────────────────────────────┘
  • Ctrl+O — сохранить
  • Ctrl+X — выйти
  • Ctrl+W — поиск
  • Ctrl+K — вырезать строку
  • Ctrl+U — вставить

vim — продвинутый редактор

bash
$ vim file.txt

Vim сложнее, но мощнее. Базовые команды:

  • i — режим вставки (можно печатать)
  • Esc — выйти из режима вставки
  • :w — сохранить
  • :q — выйти
  • :wq — сохранить и выйти
  • :q! — выйти без сохранения

Совет: Для начала используй nano. Vim изучишь позже, если захочешь.


11. Перенаправление и пайпы

> и >> — запись в файл

bash
# Записать вывод в файл (перезаписать)
$ echo "Hello" > file.txt

# Добавить в конец файла
$ echo "World" >> file.txt

# Записать список файлов
$ ls -la > file-list.txt

| — пайп (конвейер)

Передаёт вывод одной команды на вход другой.

bash
# Найти PHP-файлы и посчитать их
$ find . -name "*.php" | wc -l

# Показать только первые 5 результатов поиска
$ grep -r "function" . | head -n 5

# Найти процесс
$ ps aux | grep "php"

wc — подсчёт

Word Count

bash
# Количество строк, слов, символов
$ wc file.txt
 10  45 234 file.txt
# 10 строк, 45 слов, 234 символа

# Только строки
$ wc -l file.txt

# Посчитать файлы в папке
$ ls | wc -l

12. Права доступа (Linux/Mac)

Понимание прав

-rwxr-xr--
 │││ │││ │││
 │││ │││ └┴┴── Остальные: r-- (только чтение)
 │││ └┴┴────── Группа: r-x (чтение + выполнение)
 └┴┴────────── Владелец: rwx (всё)
  • r (read) — чтение
  • w (write) — запись
  • x (execute) — выполнение

chmod — изменить права

bash
# Сделать файл исполняемым
$ chmod +x script.sh

# Числовая запись (rwx = 4+2+1 = 7)
$ chmod 755 script.sh    # rwxr-xr-x
$ chmod 644 file.txt     # rw-r--r--

chown — изменить владельца

bash
$ chown user:group file.txt
$ chown -R user:group folder/    # Рекурсивно

13. Переменные окружения

Просмотр

bash
# Все переменные
$ env

# Конкретная переменная
$ echo $PATH
$ echo $HOME
$ echo $USER

PATH — важнейшая переменная

PATH содержит список папок, где система ищет исполняемые файлы.

bash
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/home/user/.local/bin

Когда ты вводишь php, система ищет файл php в этих папках.

Добавление в PATH (временно)

bash
$ export PATH=$PATH:/new/path

Добавление в PATH (постоянно)

Добавь в файл ~/.bashrc (или ~/.zshrc для zsh):

bash
export PATH=$PATH:/new/path

Затем:

bash
$ source ~/.bashrc

14. Полезные команды для разработки

clear — очистить экран

bash
$ clear

Или сочетание Ctrl+L

history — история команд

bash
$ history
  501  cd projects
  502  ls
  503  php -v

Выполнить команду из истории:

bash
$ !503    # Выполнит php -v

which — где находится программа

bash
$ which php
/usr/bin/php

$ which composer
/usr/local/bin/composer

man — документация

bash
$ man ls    # Документация по ls
$ man grep  # Документация по grep

Навигация как в less, выход — q.

curl — HTTP-запросы

bash
# GET-запрос
$ curl https://example.com

# Показать заголовки
$ curl -I https://example.com

# POST-запрос
$ curl -X POST -d "name=Ivan" https://example.com/api

# Сохранить в файл
$ curl -o file.html https://example.com

wget — скачивание файлов

bash
$ wget https://example.com/file.zip

15. Команды для PHP-разработки

PHP

bash
# Версия
$ php -v

# Выполнить код
$ php -r "echo 'Hello';"

# Выполнить файл
$ php script.php

# Запустить сервер
$ php -S localhost:8000

# Проверить синтаксис
$ php -l file.php

# Интерактивный режим
$ php -a
Interactive shell
php > echo 1 + 1;
2
php > exit

Composer

bash
# Версия
$ composer -V

# Создать проект
$ composer create-project laravel/laravel my-app

# Установить зависимости
$ composer install

# Добавить пакет
$ composer require guzzlehttp/guzzle

# Добавить dev-зависимость
$ composer require --dev phpunit/phpunit

# Обновить пакеты
$ composer update

# Автозагрузка
$ composer dump-autoload

Git (подробнее в отдельной главе)

bash
# Инициализация
$ git init

# Статус
$ git status

# Добавить файлы
$ git add .

# Коммит
$ git commit -m "Initial commit"

# Отправить на сервер
$ git push origin main

Laravel Artisan

bash
# Список команд
$ php artisan list

# Создать контроллер
$ php artisan make:controller UserController

# Создать модель с миграцией
$ php artisan make:model Post -m

# Миграции
$ php artisan migrate

# Очистить кеш
$ php artisan cache:clear

16. Горячие клавиши терминала

СочетаниеДействие
TabАвтодополнение команд и путей
Ctrl+CПрервать выполнение
Ctrl+DВыход (то же, что exit)
Ctrl+LОчистить экран
Ctrl+AВ начало строки
Ctrl+EВ конец строки
Ctrl+UУдалить от курсора до начала
Ctrl+KУдалить от курсора до конца
Ctrl+WУдалить слово перед курсором
Ctrl+RПоиск по истории
/ Предыдущая/следующая команда
!!Повторить последнюю команду

Tab — твой лучший друг

bash
# Введи начало и нажми Tab
$ cd pro[Tab]
$ cd projects/    # Автодополнение!

# Если несколько вариантов — Tab дважды покажет список
$ cd p[Tab][Tab]
photos/  projects/  public/

17. Алиасы — свои сокращения

Устал вводить длинные команды? Создай алиас!

Временный алиас

bash
$ alias ll="ls -la"
$ alias ..="cd .."
$ alias gs="git status"

# Теперь можно:
$ ll
$ ..
$ gs

Постоянные алиасы

Добавь в ~/.bashrc или ~/.zshrc:

bash
# Навигация
alias ..="cd .."
alias ...="cd ../.."
alias ll="ls -la"

# Git
alias gs="git status"
alias ga="git add"
alias gc="git commit"
alias gp="git push"
alias gl="git log --oneline"

# PHP
alias pa="php artisan"
alias serve="php -S localhost:8000"

# Composer
alias ci="composer install"
alias cu="composer update"
alias cr="composer require"

После изменения:

bash
$ source ~/.bashrc

18. Шпаргалка команд

┌─────────────────────────────────────────────────────────────────┐
│                    ШПАРГАЛКА ТЕРМИНАЛА                          │
├──────────────────┬──────────────────────────────────────────────┤
│ НАВИГАЦИЯ        │                                              │
├──────────────────┼──────────────────────────────────────────────┤
│ pwd              │ Где я?                                       │
│ ls               │ Что здесь?                                   │
│ ls -la           │ Подробный список + скрытые                   │
│ cd folder        │ Перейти в папку                              │
│ cd ..            │ На уровень выше                              │
│ cd ~             │ В домашнюю папку                             │
│ cd -             │ В предыдущую папку                           │
├──────────────────┼──────────────────────────────────────────────┤
│ ФАЙЛЫ И ПАПКИ    │                                              │
├──────────────────┼──────────────────────────────────────────────┤
│ mkdir folder     │ Создать папку                                │
│ mkdir -p a/b/c   │ Создать вложенные папки                      │
│ touch file       │ Создать файл                                 │
│ cp src dst       │ Копировать                                   │
│ cp -r dir1 dir2  │ Копировать папку                             │
│ mv src dst       │ Переместить/переименовать                    │
│ rm file          │ Удалить файл                                 │
│ rm -r folder     │ Удалить папку с содержимым                   │
├──────────────────┼──────────────────────────────────────────────┤
│ ПРОСМОТР         │                                              │
├──────────────────┼──────────────────────────────────────────────┤
│ cat file         │ Показать содержимое                          │
│ head file        │ Первые 10 строк                              │
│ tail file        │ Последние 10 строк                           │
│ tail -f file     │ Следить за файлом                            │
│ less file        │ Постраничный просмотр                        │
├──────────────────┼──────────────────────────────────────────────┤
│ ПОИСК            │                                              │
├──────────────────┼──────────────────────────────────────────────┤
│ find . -name "x" │ Найти файл по имени                          │
│ grep "text" file │ Найти текст в файле                          │
│ grep -r "t" .    │ Рекурсивный поиск текста                     │
├──────────────────┼──────────────────────────────────────────────┤
│ РАЗНОЕ           │                                              │
├──────────────────┼──────────────────────────────────────────────┤
│ clear / Ctrl+L   │ Очистить экран                               │
│ history          │ История команд                               │
│ which program    │ Где находится программа                      │
│ echo $VAR        │ Показать переменную                          │
│ Ctrl+C           │ Прервать выполнение                          │
│ Tab              │ Автодополнение                               │
└──────────────────┴──────────────────────────────────────────────┘

19. Упражнения

Упражнение 1: Навигация (10 минут)

bash
# 1. Открой терминал и узнай, где ты
$ pwd

# 2. Перейди в домашнюю папку
$ cd ~

# 3. Посмотри содержимое
$ ls -la

# 4. Создай папку для проектов
$ mkdir -p projects/php-learning

# 5. Перейди в неё
$ cd projects/php-learning

# 6. Проверь путь
$ pwd
# Должно быть: /home/user/projects/php-learning

Упражнение 2: Создание структуры проекта (15 минут)

Создай структуру с помощью команд терминала:

calculator/
├── index.php
├── css/
│   └── style.css
├── js/
│   └── script.js
└── includes/
    ├── header.php
    └── footer.php

Решение:

bash
$ mkdir calculator
$ cd calculator
$ touch index.php
$ mkdir css js includes
$ touch css/style.css
$ touch js/script.js
$ touch includes/header.php includes/footer.php

# Проверь результат
$ ls -R

Упражнение 3: Работа с файлами (10 минут)

bash
# 1. Создай файл test.txt
$ echo "Первая строка" > test.txt

# 2. Добавь ещё строку
$ echo "Вторая строка" >> test.txt

# 3. Посмотри содержимое
$ cat test.txt

# 4. Скопируй файл
$ cp test.txt backup.txt

# 5. Переименуй оригинал
$ mv test.txt renamed.txt

# 6. Удали backup
$ rm backup.txt

# 7. Проверь, что осталось
$ ls

Упражнение 4: Поиск (15 минут)

bash
# 1. Перейди в папку с каким-нибудь проектом (или создай тестовые файлы)

# 2. Найди все PHP-файлы
$ find . -name "*.php"

# 3. Найди файлы, где есть слово "echo"
$ grep -r "echo" .

# 4. Посчитай количество PHP-файлов
$ find . -name "*.php" | wc -l

# 5. Найди самый большой файл
$ ls -lhS | head -5

Упражнение 5: PHP из терминала (10 минут)

bash
# 1. Проверь версию PHP
$ php -v

# 2. Выполни простой код
$ php -r "echo 2 + 2;"

# 3. Создай файл hello.php
$ echo '<?php echo "Hello from CLI!\n";' > hello.php

# 4. Выполни его
$ php hello.php

# 5. Проверь синтаксис
$ php -l hello.php

# 6. Запусти встроенный сервер (и открой http://localhost:8000)
$ php -S localhost:8000
# Ctrl+C чтобы остановить

20. Вопросы для самопроверки

  1. Что делает команда cd ..?

  2. Чем отличается > от >>?

  3. Как создать папку с подпапками одной командой?

  4. Что означает ~ в пути?

  5. Как найти все PHP-файлы в проекте?

  6. Что делает | (пайп)?

  7. Как посмотреть последние 20 строк файла?

  8. Зачем нужен Tab в терминале?


21. Частые ошибки

"command not found"

bash
$ composr install
bash: composr: command not found

Причина: Опечатка или программа не установлена / не в PATH.

Решение: Проверь написание. Установи программу. Добавь в PATH.

"Permission denied"

bash
$ ./script.sh
bash: ./script.sh: Permission denied

Решение:

bash
$ chmod +x script.sh
$ ./script.sh

"No such file or directory"

bash
$ cd projetcs
bash: cd: projetcs: No such file or directory

Причина: Папка не существует или опечатка.

Решение: Проверь ls, используй Tab для автодополнения.

Застрял в vim

Если случайно открыл vim и не можешь выйти:

Нажми Esc, затем введи :q! и нажми Enter

Резюме главы

┌────────────────────────────────────────────────────────────────┐
│                      ЗАПОМНИ ГЛАВНОЕ                           │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  • Терминал — обязательный инструмент разработчика            │
│  • pwd, ls, cd — базовая навигация                            │
│  • mkdir, touch, cp, mv, rm — работа с файлами                │
│  • Tab — автодополнение, используй постоянно!                 │
│  • Ctrl+C — прервать, Ctrl+L — очистить                       │
│  • find и grep — поиск файлов и текста                        │
│  • > записывает в файл, >> добавляет                          │
│  • | (pipe) — передаёт вывод следующей команде                │
│  • Алиасы экономят время на частых командах                   │
│                                                                │
└────────────────────────────────────────────────────────────────┘

Следующая глава: Глава 1.1: Синтаксис PHP — переменные, типы данных, операторы, как PHP выполняет код

Выпущено под лицензией MIT