Как создать файл в Linux через командную строку?

«Как создать файл в Linux через командную строку?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps-автоматизации создание файлов чаще всего происходит через скрипты или инструменты управления конфигурацией. Вот основные способы через CLI:

1. touch — создать пустой файл или обновить временные метки:

touch /path/to/config.yaml
touch app.log  # Если файл существует, обновится его mtime

Используется в скриптах для проверки наличия файлов или инициализации.

2. Перенаправление вывода (>, >>) — быстрое создание с содержимым:

# Создать/перезаписать файл
echo "server_port: 8080" > config.yml

# Добавить в конец файла (append)
echo "log_level: debug" >> config.yml

# Создать пустой файл (аналог touch)
> /tmp/empty.lock

3. cat с heredoc — для многострочного содержимого (удобно для скриптов):

cat > /etc/docker/daemon.json << 'EOF'
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

4. install — создание с контролем прав доступа (более продвинуто):

# Создать скрипт с правами на выполнение
install -m 755 /dev/null /usr/local/bin/startup.sh

# Создать конфиг, доступный только для чтения владельцу
install -m 600 /dev/null ~/.ssh/authorized_keys

5. Через текстовые редакторы в non-interactive режиме:

# С помощью printf и tee (с sudo)
printf "[Unit]nDescription=My Servicen" | sudo tee /etc/systemd/system/my.service > /dev/null

DevOps-контекст: В Ansible для идемпотентного создания файла с содержимым используется модуль copy или template:

- name: Ensure configuration file exists
  copy:
    dest: /etc/app/settings.conf
    content: |
      ENVIRONMENT=production
      DB_HOST={{ db_host }}
    owner: appuser
    group: appuser
    mode: '0644'