Где я и что здесь
| Команда | Что делает |
|---|---|
pwd | текущий каталог |
ls -la | содержимое, со скрытыми файлами и правами |
cd каталог, cd .., cd ~, cd - | перейти, вверх, домой, назад |
mkdir -p a/b/c | создать каталоги с родителями |
cp -r, mv, rm, rm -r | копировать, переместить, удалить |
cat, less, head, tail | посмотреть файл целиком, постранично, начало, конец |
Tab дополняет пути, стрелка вверх и Ctrl+R ищут по истории команд. Справка — man команда или команда --help. Имена с пробелами берут в кавычки.
Корзины нет: rm удаляет безвозвратно. rm -rf $DIR/ с пустой переменной — классическая катастрофа.
grep и пайпы
grep ищет строки по тексту:
grep -rn "TODO" src/ # рекурсивно, с номерами строк
grep -i error app.log # без учёта регистра
grep -v DEBUG app.log # строки без совпадения
Пайп | передаёт вывод одной команды на вход следующей — из простых команд собирают анализ:
grep ERROR app.log | wc -l # сколько ошибок
cut -d' ' -f1 access.log | sort | uniq -c | sort -rn | head # топ IP
tail -f app.log | grep ERROR # следить за ошибками
Перенаправление: > — записать в файл, >> — дописать, 2> — записать ошибки.
Права доступа
У файла есть владелец, группа и три набора прав — для владельца, группы и остальных: чтение (r = 4), запись (w = 2), выполнение (x = 1).
chmod 755 deploy.sh # владелец rwx, остальные r-x
chmod 600 id_ed25519 # только владелец читает и пишет
Для каталога x — право войти, r — увидеть список файлов. Удалить файл позволяет право записи в каталог, а не в сам файл. Секреты и ключи — 600: ssh откажется работать с ключом с более открытыми правами.
Окружение и PATH
Переменные окружения процесс получает от родителя:
export DATABASE_URL=postgres://localhost/app # для сессии и дочерних
LOG_LEVEL=debug ./run.sh # для одной команды
echo $DATABASE_URL
PATH — список каталогов через двоеточие, где оболочка ищет программы. «command not found» означает, что программы нет ни в одном из них: она не установлена, установлена в другое место или не активировано окружение — например, Python venv. which команда показывает, откуда берётся программа. Скрипт из текущего каталога запускают как ./script.sh: точки в PATH нет. Постоянные настройки — в ~/.bashrc или ~/.profile.
SSH по ключам
Пара ключей: закрытый хранится у вас, открытый кладут на сервер в ~/.ssh/authorized_keys. При входе сервер проверяет, что вы владеете закрытым ключом, — сам ключ по сети не передаётся.
ssh-keygen -t ed25519
ssh-copy-id user@server
На сервере отключают вход по паролю и вход под root. Bastion — единственная точка входа во внутреннюю сеть: остальные серверы в интернет не открыты, а доступ идёт через один контролируемый хост: ssh -J bastion internal-host.
Что запомнить
rmбез корзины — проверяйте пути и переменные.- Пайпы превращают маленькие команды в анализ.
- Ключи и секреты — права 600.
- «command not found» — ищите программу в PATH.
- В SSH — ключи вместо паролей, во внутреннюю сеть — через bastion.