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

Создание и удаление файлов и директорий в терминале — команды touch, mkdir, rm, cp, mv для управления файловой системой без GUI.

Зачем нужно

Работа в терминале быстрее GUI для рутинных операций: создать компонент, перенести папку, удалить артефакты сборки. Знание этих команд необходимо для написания скриптов автоматизации, работы с CI/CD и SSH-сессий на серверах.

Где используется

  • Scaffolding — быстрое создание структуры нового проекта
  • Скрипты очистки: удаление dist/, node_modules/, временных файлов
  • CI/CD пайплайны — создание директорий перед деплоем
  • Переименование и перемещение файлов при рефакторинге

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

# Создать пустой файл (или обновить timestamp если существует)
touch index.ts
touch src/components/Button.tsx

# Создать файл с содержимым
echo "export default {}" > config.js
echo "# My Project" > README.md

# Создать файл с многострочным содержимым (heredoc)
cat > .env.example << 'EOF'
NODE_ENV=development
PORT=3000
DATABASE_URL=
JWT_SECRET=
EOF

# Скопировать файл
cp .env.example .env
cp src/Button.tsx src/ButtonV2.tsx

Создание директорий

# Создать директорию
mkdir src
mkdir dist

# Создать вложенные директории (-p = parents, не ошибаться если существует)
mkdir -p src/components/ui
mkdir -p .husky

# Создать несколько директорий сразу
mkdir -p src/{components,hooks,utils,types}
# → создаёт src/components, src/hooks, src/utils, src/types

Удаление файлов

# Удалить файл
rm file.txt
rm src/old-component.ts

# Удалить несколько файлов
rm file1.txt file2.txt
rm *.log           # все .log файлы в текущей директории

# Удалить с подтверждением каждого (-i = interactive)
rm -i important.txt

# Принудительно без подтверждения (-f = force)
rm -f generated.js

Удаление директорий

# Удалить пустую директорию
rmdir empty-folder

# Удалить директорию со всем содержимым (-r = recursive)
rm -r dist/
rm -r node_modules/

# Принудительно и рекурсивно (осторожно!)
rm -rf dist/
rm -rf .cache/

# Очистка перед сборкой (типичный скрипт)
rm -rf dist && npm run build

Перемещение и переименование

# Переместить файл (mv = move)
mv old-name.ts new-name.ts          # переименовать
mv src/Button.tsx src/components/   # переместить в папку

# Переместить директорию
mv old-folder/ new-folder/

# Переместить несколько файлов в папку
mv *.ts src/

Копирование директорий

# Скопировать директорию рекурсивно (-r)
cp -r src/ src-backup/

# Скопировать с сохранением прав и времени (-a = archive)
cp -a dist/ release/

Практические паттерны

# Создать структуру React компонента
mkdir -p src/components/Button
touch src/components/Button/index.tsx
touch src/components/Button/Button.module.css
touch src/components/Button/Button.test.tsx

# Очистить артефакты сборки
rm -rf dist/ .cache/ coverage/

# Создать .gitkeep чтобы git отслеживал пустую директорию
mkdir -p logs
touch logs/.gitkeep

Частые ошибки

  • rm -rf / или rm -rf ~/ — удаляет всю файловую систему или домашнюю директорию. Всегда проверяй путь перед -rf
  • rm -r node_modules без -f — долго из-за запросов подтверждения на каждом файле
  • mkdir src/components/ui без -p — ошибка если src/components не существует
  • mv file.ts без назначения — ошибка синтаксиса, нужен destination
  • Удаление .env вместо .env.example — потеря локальных секретов без возможности восстановления

Связанные темы

Ресурсы