Итоговая практика
Ваш первый день в команде данных. Поставщик прислал папку inbox. В ней вперемешку файлы продаж, справочник товаров, временные файлы и скрытый файл с ключом API.
Перед загрузкой в хранилище папку нужно привести к такому виду:
inbox/├── raw/│ ├── sales/ ← месячные файлы продаж│ └── ref/ ← справочник товаров├── archive/ ← копия справочника с датой├── README.txt└── .env ← ключ API, закрыт правами 600Используйте только команды из курса. Решайте сами, без AI. Решения — под каждым заданием.
Хотите начать заново? Удалите ~/cli-practice и распакуйте архив ещё раз (см. Установка).
Задание 1
Заголовок раздела «Задание 1»Перейдите в папку inbox и напечатайте полный путь к ней.
Проверка: путь заканчивается на /cli-practice/inbox.
Решение
cd ~/cli-practice/inboxpwdЗадание 2
Заголовок раздела «Задание 2»ls показывает 8 имён, но в папке есть ещё скрытый файл. Найдите его и выведите содержимое.
Проверка: API_KEY=not-a-real-key.
Решение
ls -acat .envЗадание 3
Заголовок раздела «Задание 3»Создайте папки raw/sales, raw/ref и archive одной командой.
Проверка: нет вывода. ls теперь показывает ещё archive и raw.
Решение
mkdir -p raw/sales raw/ref archiveЗадание 4
Заголовок раздела «Задание 4»Перенесите оба файла продаж в raw/sales одним шаблоном, не печатая имена.
Проверка: ls raw/sales показывает sales_2024-04.csv и sales_2024-05.csv.
Решение
mv sales_*.csv raw/sales/Задание 5
Заголовок раздела «Задание 5»Перенесите products.csv в raw/ref. Потом скопируйте его в archive/products_2024-06-01.csv как копию с датой. Проверьте, что файлы одинаковые.
Проверка: diff ничего не печатает. Значит, файлы одинаковые.
Решение
mv products.csv raw/ref/cp raw/ref/products.csv archive/products_2024-06-01.csvdiff raw/ref/products.csv archive/products_2024-06-01.csvЗадание 6
Заголовок раздела «Задание 6»В notes.txt написано, что файлы tmp — мусор. Сначала посмотрите, что попадает под шаблон. Потом удалите эти файлы одной командой.
Проверка: шаблон находит три файла tmp_export_01.bak–tmp_export_03.bak. После удаления ls их не показывает.
Решение
cat notes.txtls tmp_*rm tmp_*.bakЗадание 7
Заголовок раздела «Задание 7»Удалите пустую папку old командой, которая удаляет только пустые папки. Переименуйте notes.txt в README.txt.
Проверка: папки old нет. Есть README.txt, нет notes.txt.
Решение
rmdir oldmv notes.txt README.txtЗадание 8
Заголовок раздела «Задание 8»Посмотрите на апрельский файл продаж: заголовок и первый заказ.
Проверка:
order_id,order_date,customer_id,amount,status1076,2024-04-01,5,453.02,completedРешение
head -n 2 raw/sales/sales_2024-04.csvЗадание 9
Заголовок раздела «Задание 9»Сколько заказов в двух файлах вместе, без заголовков? И сколько из них выполнено (completed)?
Проверка: 44 заказа, из них 36 выполнено.
Решение
grep -hv order_id raw/sales/*.csv | wc -lgrep -h ",completed" raw/sales/*.csv | wc -l-v order_id убирает строки заголовков: только в них есть слово order_id.
Задание 10
Заголовок раздела «Задание 10»Закройте .env так, чтобы его мог читать только владелец.
Проверка: ls -l .env показывает -rw-------. В Git Bash права могут не поменяться — это нормально.
Решение
chmod 600 .envls -l .envЗадание 11
Заголовок раздела «Задание 11»Проверьте результат: выведите все файлы в inbox, включая скрытые, по одному пути на строку, отсортированные.
Проверка:
./.env./README.txt./archive/products_2024-06-01.csv./raw/ref/products.csv./raw/sales/sales_2024-04.csv./raw/sales/sales_2024-05.csvРешение
find . -type f | sortЗадание 12
Заголовок раздела «Задание 12»Упакуйте готовую папку inbox в архив inbox-clean.tar.gz в папке cli-practice. Посмотрите, что в архиве.
Проверка: в архиве 11 записей: 5 папок (inbox/ и 4 внутри) и 6 файлов, включая inbox/.env.
Решение
cd ..tar czf inbox-clean.tar.gz inboxtar tzf inbox-clean.tar.gztar tzf inbox-clean.tar.gz | wc -lЧто дальше
Заголовок раздела «Что дальше»Вы прошли базовый минимум CLI. Теперь терминал не страшен, а команды в инструкциях и у AI-агентов понятны.
- Продолжайте с Базовым минимумом SQL, если ещё не прошли его.
- Дальше в практике: Python, Git и Docker. Все они работают через терминал.