1 of 28

Инструменты

промышленной

разработки

Лекция 1 · вводная

Shell · окружение · Bash/Zsh/Fish · tmux

ИПР 2026/27

Вводная лекция

01

2 of 28

Сегодняшний маршрут

Ориентация

02

01

Зачем курс

почему практические инструменты нужны рядом с фундаментом

02

Terminal vs Shell

где мы вводим текст и какая программа запускает команды

03

Environment & PATH

как shell находит whoami, git, python и другие executable

04

Типичные ошибки

пробелы, quoting, escaping и первые перенаправления

05

tmux

как жить с долгими процессами и удалёнными сессиями

3 of 28

Зачем вам этот курс?

О курсе

03

Основной рабочий сценарий

виртуалка

→

Docker

→

review

→

тесты

→

CI/CD

Главная цель курса

Не выучить все команды наизусть, а получить рабочую карту: какие сущности существуют, как они связаны и что искать, когда что-то сломалось.

​

$ google?

$ chatgpt?

$ man?

​

# искать проще, когда

# знаешь название проблемы

4 of 28

Карта курса: 3 модуля

О курсе

04

Модуль 1

Базовые инструменты

Shell · Git · debugging · hardware numbers

Модуль 2

LLM-инфраструктура

models · evals · harness · MCP · agents

Модуль 3

Промышленная разработка

build · testing · CI/CD · cloud

Сегодня: вход в первый модуль и организационные моменты

5 of 28

Как будет устроена практика

О курсе

05

5 домашних заданий

Shell

Git

LLM

Makefile

Cloud

Оценка

M_total

=

min(average(HW₁…HW₅)+M_bonus, 10)

Бонусы

• исправления опечаток

• фактические ошибки

• важные дополнения

• полезная активность

Максимум — 10

6 of 28

Рабочее окружение и связь

О курсе

06

Linux или macOS

• нужен доступ к Unix-like окружению

• основная поддержка: Ubuntu и macOS

• с другими дистрибутивами поможем по возможности

Коммуникация

• важные объявления — в канале курса

• чат — для обсуждений, без гарантии ответа

• структурная обратная связь — через форму

7 of 28

Переходим к теме

Shell

Переход

07

8 of 28

Почему CLI до сих пор жив

Shell

08

$ run something

$ inspect state

$ automate it

$ repeat anywhere

универсальность

похожие принципы на разных Unix-системах

автоматизация

команды легко превращаются в скрипты

удалённая работа

SSH, серверы, виртуалки, контейнеры

прозрачность

состояние видно через команды и файлы

9 of 28

Terminal ≠ Shell

Shell

09

Terminal

Shell

Terminal

окно / вкладка / эмулятор

принимает ввод и показывает вывод

Shell

программа, которая читает строку, разбирает её и запускает команды

10 of 28

Bash — общий язык примеров

Shell

10

В курсе

#!/usr/bin/env bash

​

set -euo pipefail

​

echo "hello"

Интерактивно

Bash, Zsh, Fish — выбирайте то, что удобно

скрипты курса — Bash

интерактивная оболочка — ваш выбор

11 of 28

Первое, что видит shell

Shell

11

atgshka@atgshka-osx:~$

user

имя пользователя

host

имя машины

~

домашний каталог

$

не root-shell

$ whoami

$ hostname

$ id -u

$ pwd

→

→

12 of 28

Environment variables

Environment

13

Экспорт переменной

$ export SOME_VAR=12919

$ echo $SOME_VAR

12919

export = передать дальше

Модель

shell process

↓

child command

Environment — пары ключ–значение. Они часто настраивают поведение программ: пути поиска, токены, режимы запуска, локаль.

13 of 28

PATH: как shell находит команды

Environment

14

$ echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Идея

PATH — это список директорий. Shell проходит по ним и ищет исполняемый файл с нужным именем.

команда

→

директории из PATH

↓

executable

14 of 28

Наивный алгоритм поиска

Environment

15

for dir in PATH.split(":"):

candidate = dir + "/" + command

​

if exists(candidate):

exec(candidate)

break

else:

print("command not found")

В реальности Bash сложнее

До PATH могут сработать:

• shell functions

• builtins

• cached paths / hash table

15 of 28

which и command -v

Environment

16

$ which whoami

/usr/bin/whoami

​

$ which which

/usr/bin/which

$ command -v whoami

/usr/bin/whoami

​

$ command -v cd

cd

Правило

`command -v` обычно надёжнее для диагностики; `which` удобен для внешних программ.

16 of 28

Первые файловые команды

Shell basics

17

pwd

где я?

ls

что вокруг?

cd

перейти

mkdir

создать директорию

touch

создать файл

rm

удалить

​

​

$ pwd

$ ls

$ mkdir demo

$ cd demo

$ touch notes.txt

$ rm notes.txt

17 of 28

Ошибка: пробел — это разделитель

Shell basics

18

$ mkdir hse course

$ ls

course hse

Что хотел пользователь?

hse course

Что получилось?

hse

course

Shell разбивает строку на слова до запуска программы.

18 of 28

Quoting и escaping

Shell basics

19

$ mkdir "hse course"

кавычки: один аргумент целиком

$ mkdir hse\ course

escape: специальный символ становится обычным

Rule of thumb

Если в имени есть пробелы или спецсимволы — остановитесь и подумайте, что именно увидит shell и точно ли они вам нужны

19 of 28

Полезные команды

Shell basics

20

Текст

`sort`, `uniq`, `grep`, `cut`, `head`, `tail`, `wc`

Файлы

`cat`, `tac`, `find`, `df`

Права

`chmod`, `chown`, `sudo`

Навигация

`cd`, `pwd`, `ls`, `mkdir`, `touch`, `rm`

В следующей лекции команды перестанут быть списком и станут инструментами расследования.

20 of 28

Потоки, перенаправления и pipes

Shell basics

21

$ command > out.txt

$ command 2> err.txt

$ command >> log.txt

$ command 2>&1

$ cat file | grep pattern

stdout

>

file

stderr

2>

err file

process A

|

process B

21 of 28

Tab completion

Удобство терминала

22

$ cd Do<Tab>

Documents/ Downloads/

Зачем это важно?

Автодополнение уменьшает число опечаток и помогает исследовать систему: какие директории, команды и опции вообще доступны.

меньше печатать

меньше ошибаться

быстрее исследовать

22 of 28

Bash, Zsh, Fish

Удобство терминала

23

Bash

baseline

почти везде; язык примеров курса

Zsh

interactive+

похож на Bash, часто удобнее в терминале

Fish

comfort

много удобств из коробки; язык отличается

# интерактивный shell может быть любым

# скрипты курса — на Bash

23 of 28

Текущий shell и shell по умолчанию

Удобство терминала

24

$ echo $SHELL

/bin/zsh

​

$ ps -p $$

PID TTY TIME CMD

12345 ttys000 0:00.04 zsh

Не путать

• login/default shell

• shell, который запущен прямо сейчас

• интерпретатор, которым исполняется скрипт

$ chsh -s "$(command -v zsh)"

Лучше менять shell явно, а не прятать `exec zsh` в `.bashrc` как основной способ.

24 of 28

Зачем нужен tmux?

tmux

25

Сценарий

Вы подключились по SSH, запустили долгий процесс и закрыли ноутбук.

​

Что случится с вашей работой?

tmux отделяет сессию от подключения

25 of 28

tmux: mental model и минимум hotkeys

tmux

26

session

→

windows

→

panes

Ctrl+b % split vertical

Ctrl+b " split horizontal

Ctrl+b c new window

Ctrl+b w list windows

Ctrl+b ? help

Ctrl+d close pane

Live demo

​

1. `tmux`

2. split panes

3. new window

4. detach

5. attach back

​

Screen: старый аналог, в курсе фокус на tmux.

26 of 28

Небольшой live demo

Shell

12

27 of 28

Вывод

Итоги

27

1

Terminal и shell — разные вещи

одно показывает, другое интерпретирует

2

Shell запускает команды через PATH

и не только через PATH

3

Quoting и escaping имеют значение

shell разбирает строку до запуска программы

4

Bash — общий язык скриптов курса

интерактивный shell можно выбирать

5

tmux переживает подключение

сессия может жить отдельно от терминала

28 of 28

Следующая лекция

Переход

28

Сегодня

ориентироваться в shell, понимать PATH, не попадаться на пробелах и знать, зачем tmux

Следующая лекция

$ grep

$ find

$ curl

$ sed

$ pipes and scripting

из набора команд → в инструмент расследования