Урок 03 из 8 · 2 минуты чтения

Командная строка — файлы, поиск, окружение и SSH

Навигация и работа с файлами, grep и пайпы, права доступа, переменные окружения и PATH, вход по SSH-ключам.

Где я и что здесь

КомандаЧто делает
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.

Проверка урока

Войдите, чтобы проверить себя: сданные проверки всех уроков курса отмечают его темы пройденными на карте и в ИПР.

Вопросы по теме

Читайте также

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования