Права, скрипты и архивы
Последний набор основ: кто может читать и запускать файл, как запустить скрипт, как упаковать и скачать файлы.
Права файлов
Заголовок раздела «Права файлов»ls -l показывает права в начале строки:
ls -l scripts/report.sh-rw-r--r-- 1 maria staff 198 Apr 1 2024 scripts/report.shРазберём -rw-r--r--:
- Первый символ — тип:
-файл,dпапка,lссылка. - Дальше три тройки: права владельца, группы и всех остальных.
r— читать,w— менять,x— запускать.-— права нет.
Здесь владелец может читать и менять файл. Остальные — только читать. Запускать не может никто.
chmod — поменять права
Заголовок раздела «chmod — поменять права»Права удобно задавать тремя цифрами: владелец, группа, остальные. r = 4, w = 2, x = 1, складываем.
| Режим | Права | Для чего |
|---|---|---|
644 | rw-r--r-- | Обычные файлы |
600 | rw------- | Секреты: .env, SSH-ключи. Только владелец |
755 | rwxr-xr-x | Скрипты и папки |
700 | rwx------ | Личные папки, например ~/.ssh |
chmod 600 config/app.env # только я могу читать паролиchmod +x scripts/report.sh # разрешить запускС правами вы встретитесь, когда SSH откажется брать ключ: UNPROTECTED PRIVATE KEY FILE. Лечится так: chmod 600 ~/.ssh/ваш_ключ. Подробнее — в уроке SSH и ключи.
Скрипты
Заголовок раздела «Скрипты»Скрипт — файл с командами. Первая строка говорит, какой программой его выполнять:
cat scripts/report.sh#!/usr/bin/env bash# Считает число заказов в каждом файле продаж.for f in data/sales_*.csv; do echo "$f: $(tail -n +2 "$f" | wc -l | tr -d ' ') orders"doneСтрока #!/usr/bin/env bash называется shebang. Запустить скрипт можно двумя способами:
bash scripts/report.sh # работает всегда./scripts/report.sh # нужно право x./ в начале значит «файл в текущей папке». Без него shell будет искать scripts/report.sh как команду.
sudo — от имени администратора
Заголовок раздела «sudo — от имени администратора»sudo запускает одну команду от имени root. Нужен, чтобы ставить программы и менять системные файлы:
sudo apt install -y htop # WSL, UbuntuShell попросит ваш пароль. Символы при вводе не видны. Это нормально.
- В WSL и Linux
sudoесть. - На macOS программы обычно ставят через Homebrew без
sudo:brew install htop. - В Git Bash
sudoнет.
Архивы: tar и gzip
Заголовок раздела «Архивы: tar и gzip»tar czf logs.tar.gz logs # упаковать папку logs в архивtar tzf logs.tar.gz # посмотреть, что внутри, не распаковываяtar xzf logs.tar.gz # распаковатьgzip big.csv # сжать один файл → big.csv.gzgunzip big.csv.gz # распаковатьБуквы в tar: c — create, x — extract, t — list, z — сжать через gzip, f — имя файла архива. Выгрузки данных и релизы программ часто приходят в .tar.gz или .csv.gz.
curl — скачать файл
Заголовок раздела «curl — скачать файл»curl -L -o file.csv https://example.com/file.csv # скачать в файлcurl -I https://dataengineer.ru # только заголовки ответаcurl https://api.github.com/repos/duckdb/duckdb # ответ API прямо на экран-L— идти по редиректам.-o— имя файла, куда сохранить.
curl — первый инструмент, чтобы проверить API. Вы уже скачали им учебные файлы.
Практика
Заголовок раздела «Практика»Все задания — в папке ~/cli-practice.
Задание 1
Заголовок раздела «Задание 1»Посмотрите права на scripts/report.sh. Попробуйте запустить его через ./.
Проверка: права -rw-r--r--. Запуск даёт ошибку Permission denied. В Git Bash скрипт может запуститься сразу: там chmod не нужен.
Решение
ls -l scripts/report.sh./scripts/report.shЗадание 2
Заголовок раздела «Задание 2»Разрешите запуск скрипта и запустите его.
Проверка:
data/sales_2024-01.csv: 25 ordersdata/sales_2024-02.csv: 22 ordersdata/sales_2024-03.csv: 28 ordersРешение
chmod +x scripts/report.shls -l scripts/report.sh./scripts/report.shПрава стали -rwxr-xr-x.
Задание 3
Заголовок раздела «Задание 3»В config/app.env лежит пароль. Сделайте так, чтобы файл мог читать только владелец.
Проверка: ls -l config/app.env показывает -rw-------.
Решение
chmod 600 config/app.envls -l config/app.envЗадание 4
Заголовок раздела «Задание 4»Упакуйте папку logs в logs-backup.tar.gz. Посмотрите, что внутри архива, не распаковывая его. Потом удалите архив.
Проверка: в архиве папки logs/, logs/archive/ и три файла .log.
Решение
tar czf logs-backup.tar.gz logstar tzf logs-backup.tar.gzrm logs-backup.tar.gzЗадание 5
Заголовок раздела «Задание 5»Проверьте, что сайт dataengineer.ru отвечает. Запросите только заголовки ответа.
Проверка: первая строка HTTP/2 200.
Решение
curl -I https://dataengineer.ruДальше: SSH и ключи.