Терминал: базовые команды

Терминал (командная строка, shell) — текстовый интерфейс для управления операционной системой: запуск программ, навигация по файлам, автоматизация задач через команды bash/zsh/sh.

Зачем нужно

Разработчику без терминала не обойтись: git, npm, docker, ssh работают только через CLI. Знание базовых команд позволяет эффективно работать с любым проектом, писать скрипты автоматизации и работать на удалённых серверах.

Где используется

  • Запуск dev-сервера, тестов, сборки (npm run dev, npm test)
  • Git операции: commit, push, pull, branch
  • SSH-сессии на удалённых серверах и в Docker контейнерах
  • CI/CD пайплайны — все шаги выполняются как shell-команды

Навигация

pwd                    # текущая директория
cd ~/projects/my-app   # перейти по пути
cd ..                  # на уровень вверх
cd -                   # предыдущая директория
ls -la                 # список файлов с деталями и скрытыми

Просмотр файлов

cat file.txt           # вывести содержимое файла
cat package.json       # часто используется для просмотра конфига
less file.txt          # постраничный просмотр (q — выход)
head -20 server.log    # первые 20 строк
tail -50 server.log    # последние 50 строк
tail -f server.log     # следить за обновлениями (follow)

Поиск

# Поиск файлов
find . -name "*.ts"              # все TypeScript файлы
find . -name ".env" -type f      # только файлы

# Поиск по содержимому
grep -r "TODO" ./src             # рекурсивно по тексту
grep -rn "console.log" ./src     # с номерами строк
grep -rl "import React" ./src    # только имена файлов

# Поиск в выводе команды (pipe)
npm list | grep eslint
ls -la | grep ".json()"

Переменные и вывод

# Переменные среды
echo $HOME             # домашняя директория
echo $PATH             # пути поиска исполняемых файлов
echo $NODE_ENV         # переменная приложения

# Вывод
echo "Hello World"
echo "Port: $PORT"

# Вывод в файл
echo "text" > file.txt    # перезаписать
echo "text" >> file.txt   # добавить в конец

Процессы

# Управление процессами
Ctrl+C                 # остановить текущий процесс
Ctrl+Z                 # приостановить процесс (фон)
bg                     # продолжить приостановленный в фоне
fg                     # вернуть фоновый процесс

# Просмотр процессов
ps aux | grep node     # все node процессы
kill -9 <PID>          # завершить процесс принудительно

# Запуск в фоне
npm run dev &

Полезные операторы

# Цепочки команд
cd my-app && npm install && npm run dev   # выполнить всё
npm run build || echo "Build failed"       # OR (если первая провалилась)
npm install; npm run dev                   # всегда выполнить оба

# Pipe — передать вывод следующей команде
cat package.json | grep "version"
ls -la | sort -k5 -n                       # отсортировать по размеру
npm list 2>/dev/null | head -20            # скрыть ошибки

# Перенаправление
command > output.txt          # stdout в файл
command 2> errors.txt         # stderr в файл
command > out.txt 2>&1        # stdout и stderr вместе
command > /dev/null 2>&1      # игнорировать весь вывод

История и автодополнение

history                   # история команд
history | grep "npm"      # поиск в истории
Ctrl+R                    # интерактивный поиск в истории
!!                        # повторить последнюю команду
!npm                      # последняя команда начинающаяся с npm

Tab                       # автодополнение команды, файла, директории
Tab Tab                   # показать все варианты

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

  • cd /my/path на Windows cmd — абсолютные Unix-пути не работают. Использовать Git Bash или WSL
  • grep "pattern" * без -r — ищет только в текущей директории, не рекурсивно
  • kill <PID> не завершает зависший процесс — нужен kill -9 <PID> (SIGKILL)
  • Забывают && между командами — если первая упала, вторая всё равно выполняется при ;
  • tail -f log.txt не обновляется — файл заблокирован. Попробовать tail -F (следит за ротацией)

Связанные темы

Ресурсы