Терминал — необходимый минимум
двадцать команд, которых хватает
Что это
Столько терминала, сколько нужно, чтобы запускать свои программы, читать логи и понимать, что предлагает ИИ. Примеры — Linux и macOS; в Windows то же самое доступно через PowerShell или WSL.
Где я и что здесь
pwd # в какой папке нахожусь
ls # что здесь
ls -la # всё, включая скрытое, с размерами и датами
cd проект # войти в папку
cd .. # на уровень вверх
cd # домойСкрытые файлы — те, что начинаются с точки: .env, .gitignore. Без -la их
не видно, и именно поэтому о них забывают.
Посмотреть файл
cat app.py # целиком
head -20 app.py # первые 20 строк
tail -20 app.py # последние 20
tail -f logs/app.log # последние и дальше в реальном времени
wc -l app.py # сколько строкtail -f — главная команда при отладке работающей программы: оставить в
отдельном окне и смотреть, что пишется, пока нажимаешь кнопки.
Найти
$ grep -rn "ошибка" logs/
logs/app.log:1:ошибка
logs/app.log:3:ошибка снова
$ find . -name "*.py"
./app.py
$ grep -c "ошибка" logs/app.log
2grep -rn — рекурсивно, с номерами строк. Это та команда, которой ищут, где в
проекте используется функция, откуда читается настройка и не попал ли ключ в
код:
grep -rn "sk-\|password\|api_key" .Файлы
cp файл копия # копировать
cp -r папка копия # копировать папку
mv старое новое # переместить или переименовать
rm файл # удалить без корзины
mkdir -p a/b/c # создать папки, включая промежуточные
du -sh . # сколько весит папкаЗапуск и остановка
python3 app.py # запустить
Ctrl+C # остановить работающую программу
Ctrl+D # закончить ввод (выйти из python, из ssh)
./script.sh # запустить скрипт
chmod +x script.sh # разрешить запускЕсли ./script.sh отвечает Permission denied — не хватает chmod +x.
Соединять команды
команда1 && команда2 # вторая только если первая удалась
команда1 | команда2 # вывод первой на вход второй
команда > файл # вывод в файл (перезаписать)
команда >> файл # дописать в конец
команда 2>&1 # ошибки туда же, куда обычный вывод&& — то, из чего состоит любая команда сборки: tsc -b && vite build
означает «проверить типы, и только если получилось — собирать» (статья 12.1).
Код возврата
$ python3 -c "import sys; sys.exit(3)"
$ echo $?
3$? — чем закончилась последняя команда. Ноль значит «успешно», всё
остальное — нет. На этом работают и &&, и проверки в сборке: программа
может напечатать «готово» и при этом вернуть ошибку.
Переменные окружения
PORT=8080 python3 app.py # задать только для этого запуска
export API_KEY=abc # задать на всю сессию терминала
echo $API_KEY # посмотреть
env | grep API # перечислить подходящиеПеременная, заданная через export, живёт до закрытия окна и не попадает ни в
какие файлы — этим она и хороша для ключей (статья 13.4).
Что ещё пригодится
history | grep docker # что я набирал про docker
Ctrl+R # поиск по истории команд
curl -s -o /dev/null -w "%{http_code}\n" localhost:8000/ # код ответа
df -h # сколько места на дисках
ps aux | grep python # какие процессы запущены
kill <номер> # остановить процессКоманду curl из этого списка стоит запомнить: она отвечает на вопрос «мой
сервер вообще жив?» без браузера и без догадок (статья 14.3).