Home » Создание файлов и папок с mkdir и touch — простые примеры
Создание файлов и папок с mkdir и touch — простые примеры

Создание файлов и папок с mkdir и touch — простые примеры

Когда ты только взялся за настройку своего первого сервера (или сто первого — неважно, ведь каждый раз как в первый), одна из первых задач — разложить всё по полочкам. А точнее, по папкам. И создавать файлы, чтобы что-то тестировать, хранить конфиги, да хоть просто для проверки прав. Казалось бы, что может быть проще? Но как показывает практика, даже базовые команды типа mkdir и touch у многих вызывают вопросы. А ведь это основа любой автоматизации, скриптов, развертывания приложений — и, по сути, управления сервером.

В этой статье разберёмся, как быстро и правильно создавать файлы и папки с помощью mkdir и touch. Покажу простые и неочевидные трюки, расскажу про типичные ошибки, сравню с альтернативами и дам советы для реальных кейсов. Если ты ищешь практику, а не сухую теорию — добро пожаловать под кат!

Почему эта тема важна и как она поможет?

Создание файлов и папок — это не просто «рутина». Это первый шаг к любому деплою, к автоматизации, к грамотной структуре данных. От того, как ты управляешь файлами и директориями, зависит:

  • Скорость развертывания приложений и сервисов.
  • Удобство обслуживания (особенно если серверов много или ты работаешь в команде).
  • Безопасность — правильные права и структура каталогов.
  • Успешность CI/CD процессов и скриптов автоматизации.
  • Возможность быстрого восстановления после сбоев.

И да, если ты ищешь где арендовать VPS или выделенный сервер, смело смотри тут: VPS и выделенные серверы.

Проблема и значимость: почему не всё так просто?

На первый взгляд кажется: «mkdir — создал папку, touch — создал файл, что тут сложного?» Но стоит начать автоматизировать деплой, писать бэкапы, работать с правами или делать вложенные структуры — и тут начинается магия. Ошибся в параметре — и скрипт падает. Не учёл права — и приложение не стартует. Забыл про вложенные папки — и твой CI/CD ломается на ровном месте. Даже банальный вопрос: «Как создать сразу несколько папок с поддиректориями?» или «Как создать пустой файл, если он уже есть?» — часто ставит в тупик.

Как это работает: что делают mkdir и touch?

mkdir — создаём директории

Команда mkdir (от make directory) создаёт одну или несколько новых директорий в файловой системе. Она не создаёт файлов, только папки. По умолчанию, если не указать путь, папка появится в текущей директории.

  • Можно создавать сразу несколько папок за раз.
  • Можно создавать вложенные структуры (например, dir1/dir2/dir3).
  • Можно задавать права доступа при создании.

touch — создаём файлы

Команда touch (от touch a file) изначально была придумана для обновления временной метки файла (дата/время последнего изменения). Но если файла ещё нет, touch создаёт его — пустой, нулевого размера. Это удобно для тестов, скриптов, подготовки структуры, создания плейсхолдеров и т.д.

  • Создаёт файлы, если их нет.
  • Обновляет временные метки существующих файлов.
  • Можно создавать сразу несколько файлов за раз.

Быстрое и простое использование: практические примеры

Создание одной папки

mkdir my_folder

Создаст папку my_folder в текущей директории.

Создание нескольких папок

mkdir logs backups temp

Создаст три папки: logs, backups, temp.

Создание вложенных папок (рекурсивно)

mkdir -p /var/www/project/releases/2024-06-01

Если какие-то из этих папок ещё не существуют, они будут созданы автоматически. Ключ -p (или --parents) — must-have для вложенных структур.

Создание файла

touch index.html

Создаст пустой файл index.html (или обновит его метку времени, если файл уже есть).

Создание нескольких файлов сразу

touch file1.txt file2.txt config.yaml

Создаст три файла или обновит их метки времени.

Создание файлов в несуществующей папке (и тут подводный камень!)

mkdir -p /opt/myapp/logs
touch /opt/myapp/logs/app.log

Сначала создаём папку (с ключом -p), потом файл. Без mkdir -p команда touch не сработает, если директории нет.

Кейсы из жизни: когда всё идёт по плану и когда нет

Кейс Что делаем Что получаем Рекомендация
Создать структуру для деплоя
mkdir -p /srv/app/releases/2024-06-01
touch /srv/app/releases/2024-06-01/.env
Готовая папка для релиза с плейсхолдером для .env Используй -p всегда для вложенных структур
Ошибка: создать файл в несуществующей папке touch /data/logs/app.log Ошибка: No such file or directory Сначала mkdir -p /data/logs, потом touch
Создать сразу много файлов и папок
mkdir -p /tmp/test/{a,b,c}
touch /tmp/test/{a,b,c}/file.txt
Три папки и в каждой по файлу Используй фигурные скобки для массового создания
Обновить дату файла без изменения содержимого touch myfile.txt Обновлена дата последнего изменения Фишка для автоматизации и триггеров в скриптах

Ошибки новичков и мифы

  • Миф: touch всегда создаёт файл.
    Факт: Если файл есть — просто обновляется время. Содержимое не меняется.
  • Ошибка: Пытаются создать файл в несуществующей директории.
    Решение: Всегда создавай папку с mkdir -p перед touch.
  • Миф: mkdir сработает без -p для вложенных папок.
    Факт: Без -p будет ошибка, если родительской директории нет.
  • Ошибка: Не задают нужные права при создании.
    Решение: Используй опцию -m для mkdir (например, mkdir -m 755 mydir).
  • Миф: touch стирает содержимое файла.
    Факт: Нет, только обновляет дату.

Похожие решения и альтернативы

  • Команда install — может создавать файлы и папки с нужными правами, копировать и сразу задавать владельца. Пример:
    install -d -m 755 /var/www/html
  • Команда cp с ключом --parents — копирует файлы и при необходимости создаёт структуру директорий.
  • Утилиты типа rsync — для массового копирования и создания структур.
  • Графические файловые менеджеры — но на сервере это редкость.

Для автоматизации и скриптов mkdir и touch — самые быстрые и универсальные.

Сравнение с другими решениями

Инструмент Создание папок Создание файлов Гибкость Для автоматизации
mkdir Да Нет Высокая Отлично
touch Нет Да Высокая Отлично
install Да Да Очень высокая Хорошо
cp –parents Да (при копировании) Да (копирует) Средняя Средне
rsync Да Да Очень высокая Отлично для больших проектов

Интересные факты и лайфхаки

  • Массовое создание файлов и папок с помощью фигурных скобок:
    mkdir -p project/{src,bin,docs,tests}
    touch project/{src,bin,docs,tests}/.gitkeep

    В каждой папке будет по файлу .gitkeep — удобно для git-репозиториев.

  • Создать файл определённого размера:
    truncate -s 1M myfile.bin
    А touch всегда создаёт пустой файл.
  • Создать файл с текущей датой в названии:
    touch "backup_$(date +%Y-%m-%d).tar.gz"
  • Создать сразу кучу файлов по маске:
    touch {01..10}.txt

    Получишь 01.txt10.txt.

  • Создать структуру для тестирования скриптов:
    mkdir -p test/{input,output,logs}
    touch test/input/{file1.dat,file2.dat}
    touch test/output/.gitkeep
    touch test/logs/app.log

Автоматизация, скрипты и новые возможности

Почему mkdir и touch — мастхэв для автоматизации?

  • Готовишь структуру для деплоя — быстро создаёшь нужные папки и пустые конфиги.
  • Пишешь скрипты для бэкапа — проверяешь, есть ли нужные директории, если нет — создаёшь.
  • CI/CD пайплайны — перед запуском тестов создаёшь временные папки и файлы, чтобы не было конфликтов.
  • Плейсхолдеры для git — .gitkeep или .empty файлы, чтобы git не удалял пустые папки.
  • Тестирование прав доступа — создаёшь файл, меняешь права, проверяешь работу приложения.
  • Шаблоны для развёртывания новых проектов — минимальный набор папок и файлов для старта.

А ещё с помощью этих команд можно быстро собирать песочницы для тестов, имитировать структуру продакшена, запускать контейнеры с нужными томами и папками. В Dockerfile часто используются RUN mkdir -p /app/logs и RUN touch /app/logs/app.log для подготовки окружения.

Ошибки и тонкости при работе на сервере

  • Права доступа: если создаёшь папки/файлы от рута — не забудь потом сменить владельца (chown), иначе приложение не сможет их использовать.
  • Проверяй, что директория существует перед созданием файла (или всегда используй mkdir -p в скриптах).
  • Не забывай про маскировку имён файлов/папок, если они формируются динамически (например, через date или переменные).
  • В скриптах всегда проверяй результат выполнения команд (set -e или проверка $?), чтобы не получить «битую» структуру.

Где найти больше информации?

  • man mkdir — официальная документация по mkdir
  • man touch — официальная документация по touch
  • GNU Coreutils Manual — подробности по всем базовым командам

Выводы и рекомендации

Команды mkdir и touch — это как швейцарский нож для любого, кто работает с серверами, пишет скрипты, автоматизирует деплой или просто хочет быстро навести порядок в файловой системе. Они просты, но очень гибки, особенно если знаешь про ключи -p, -m и умеешь использовать фигурные скобки для массовых операций.

Используй mkdir -p для создания вложенных структур, не забывай про права доступа, автоматизируй создание файлов и папок в своих скриптах. Это поможет избежать типовых ошибок, ускорит деплой и сделает твои проекты более надёжными. А если нужен сервер для экспериментов или продакшена — посмотри VPS или выделенный сервер.

Дерзай, автоматизируй — и пусть твоя файловая система всегда будет чистой и логичной!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked