Гид по технологиям

Как исправить окончания строк: dos2unix и unix2dos

4 min read Инструменты Обновлено 24 Dec 2025
dos2unix и unix2dos — исправление окончаний строк
dos2unix и unix2dos — исправление окончаний строк

Печатная машинка на столе с символами новой строки

Что такое окончания строк?

Окончание строки — специальный символ или последовательность, которая обозначает конец строки в текстовом файле. В терминологии:

  • LF (line feed, \n) — перевод строки (используется в Unix/Linux).
  • CR (carriage return, \r) — возврат каретки (исторически использовался на печатающих машинах).
  • CRLF (\r\n) — сочетание CR и LF (используется в Windows).

Термин “новая строка” обычно соответствует LF; Windows по традиции использует CRLF. Большинство современных редакторов умеют обнаруживать формат, но при запуске скриптов или передаче файлов между системами это может вызывать ошибки.

Почему это важно

  • Скрипты на Unix-подобных системах могут сообщать об ошибках из-за лишних символов CR.
  • Конфигурационные файлы и логи могут выглядеть некорректно в другом окружении.
  • Автоматизация и сборочные скрипты чувствительны к точному формату строк.

Важно: для двоичных файлов (изображений, исполняемых файлов и т.п.) преобразования окончаний строк недопустимы — это повредит файл.

Использование Dos2Unix и Unix2Dos

Страница man для утилиты dos2unix

Утилиты dos2unix и unix2dos конвертируют окончания строк в текстовых файлах. Обычно они уже установлены в дистрибутивах, но при необходимости можно поставить их через менеджер пакетов (см. раздел “Шпаргалка по установке”).

Примеры базовых команд:

dos2unix file

Эта команда конвертирует файл с формата DOS (CRLF) в Unix (LF) на месте.

Чтобы сохранить исходный файл и записать результат в другой файл, используйте опцию -n:

dos2unix -n file1 file2

Здесь file1 — исходный файл, file2 — результирующий. unix2dos работает аналогично, но конвертирует из LF в CRLF.

Примечание

  • Команды изменяют только текстовые файлы. Если вы не уверены, проверьте тип файла (например, с помощью файла file).
  • Некоторые реализации dos2unix поддерживают дополнительные опции для резервного копирования и выбора кодировок; читайте man-страницу на вашей системе.

Мини-методология: шаги перед конвертацией

  1. Сделайте резервную копию или используйте систему контроля версий.
  2. Определите тип файла: file filename или просмотр в hex-редакторе покажет \r символы.
  3. Примените dos2unix/unix2dos для нужных файлов или папок.
  4. Протестируйте скрипты и конфигурации в целевой среде.

Альтернативные подходы

  • Редактор кода: большинство IDE и текстовых редакторов (VS Code, Sublime, Notepad++) позволяют выбрать формат окончаний строк и сохранить файл в нужном формате.
  • Git: настройте core.autocrlf и .gitattributes, чтобы автоматически нормализовать окончания при коммитах и чек-аутах.
    • core.autocrlf = true на Windows (конвертирует LF -> CRLF при checkout), core.autocrlf = input на Unix (сохраняет LF в репозитории).
    • .gitattributes: добавьте * text=auto eol=lf для принуждения LF в репозитории.
  • Скрипты: простые sed/awk/perl‑оды для массовой замены, но осторожно с кодировками и бинарными данными.

Когда это не работает или где подводные камни

  • Файлы в UTF-16 или с BOM: dos2unix ожидает текст в однобайтовой кодировке; при UTF-16 сначала нужно перекодировать (например, с помощью iconv).
  • Старые macOS (до Mac OS X) использовали только CR; поведение может отличаться.
  • Бинарные файлы, архивы, исполняемые — не трогать.
  • Если в файле смешаны форматы (части с LF, части с CRLF), конверсия может не исправить автоматические ожидания приложений — проверьте результат.

Шпаргалка: команды и установка

Установка (распространённые менеджеры пакетов):

# Debian/Ubuntu
sudo apt install dos2unix

# RHEL/CentOS/Fedora
sudo yum install dos2unix

# macOS (Homebrew)
brew install dos2unix

Быстрая конверсия каталога:

find . -type f -name "*.txt" -exec dos2unix {} +

Часто полезные команды Git:

# Установить автоконвертацию при коммитах
git config --global core.autocrlf input

# Принудительно нормализовать все файлы в репозитории
git add --renormalize .

Ролевые чек-листы

Для разработчика:

  • Сделать резервную копию/commit перед массовой операцией.
  • Настроить editorconfig или .gitattributes для команды.
  • Тестировать скрипты в CI и в целевой ОС.

Для системного администратора:

  • Автоматизировать проверки формата в конвейере развертывания.
  • Исключать двоичные файлы из конверсий.
  • Документировать требования по кодировке и окончаниям строк.

Для технического писателя:

  • Всегда сохранять исходные документы в LF для совместимости с Unix-процессами.
  • Указывать формат в руководствах по локализации и сборке.

Краткий глоссарий

  • LF — перевод строки (\n).
  • CR — возврат каретки (\r).
  • CRLF — Windows-окончание строки (\r\n).
  • BOM — маркер порядка байтов в текстовых файлах (встречается в UTF-8/UTF-16).

Критерии приёмки

  • Файлы в репозитории имеют ожидаемые окончания строк согласно .gitattributes.
  • Скрипты запускаются без ошибок, связанных с лишними символами конца строки.
  • Никакие двоичные файлы не были повреждены после массовых операций.

Краткое резюме

Dos2unix и unix2dos — простые и надёжные инструменты для приведения окончаний строк в соответствие с целевой ОС. Вместе с настройкой Git и редакторов они помогают избежать проблем при совместной работе между Windows и Linux.

Важно: перед массовыми изменениями всегда сохраняйте резервную копию и проверяйте кодировки файлов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Заполняемые формы в Microsoft Word
Microsoft Word

Заполняемые формы в Microsoft Word

Как читать EXIF: руководство по метаданным
Фотография

Как читать EXIF: руководство по метаданным

Бесплатный хостинг на GitHub Pages
Веб-хостинг

Бесплатный хостинг на GitHub Pages

Открыть несколько изображений в Photoshop
Photoshop

Открыть несколько изображений в Photoshop

Установка Kali Linux в VirtualBox
Linux

Установка Kali Linux в VirtualBox

6 управленческих навыков для резюме
Карьера

6 управленческих навыков для резюме