dos2unix и unix2dos — конвертация переносов строк
Что такое переносы строк и почему это важно
Компьютерные системы по-разному отмечают конец строки. Исторически в электромеханических терминалах были две команды: возврат каретки и перевод строки. Сегодня это отражается в трёх форматах:
- LF — «line feed», символ \n. Стандарт Unix и Linux.
- CRLF — «carriage return + line feed», символы \r\n. Стандарт Windows и MS‑DOS.
- CR — «carriage return», символ \r. Устаревший формат классических macOS (до Mac OS X).
Если файл с одним форматом открыть в системе, которая ожидает другой формат, строки могут отображаться некорректно. Скрипты и интерпретаторы могут выдавать ошибки из‑за лишних \r символов.
Важно: перед массовой конвертацией делайте резервную копию. Конвертация бинарных файлов и файлов с UTF‑16 может повредить данные.
Как быстро определить формат файла
Используйте эти команды в терминале:
file имя_файла
od -c имя_файла | head
cat -v имя_файла | sed -n '1,5p'- file часто укажет “with CRLF line terminators” для Windows‑файлов.
- od покажет управляющие символы: \r как “\r” и \n как “\n”.
- cat -v покажет ^M для \r.
Утилиты dos2unix и unix2dos
Утилита dos2unix конвертирует файлы из формата DOS/Windows (CRLF) в Unix (LF). unix2dos делает обратное.
- Конвертация файла на месте:
dos2unix file- Конвертация с записью в новый файл:
dos2unix -n file1 file2Аналогично для unix2dos:
unix2dos file
unix2dos -n file1 file2Если утилит нет в системе, установите её через менеджер пакетов вашей ОС, например:
- Debian/Ubuntu:
sudo apt install dos2unix - RHEL/CentOS/Fedora:
sudo dnf install dos2unixилиsudo yum install dos2unix - Arch:
sudo pacman -S dos2unix - macOS (Homebrew):
brew install dos2unix
В Windows можно использовать WSL, MSYS2, Cygwin или редакторы вроде Notepad++/VS Code.
Мини‑методология: безопасная конвертация
- Определите формат файла (см. выше).
- Сделайте резервную копию:
cp file file.bak. - Конвертируйте копию:
dos2unix -n file.bak fileилиunix2dos -n file.bak file. - Протестируйте скрипты/программы.
- Внесите изменения в процесс CI/CD, если нужно автоматизировать проверку.
Шпаргалка (cheat sheet)
- Быстрая проверка:
file file.txt - Показать не‑печатаемые символы:
cat -v file.txt - Конвертировать на месте:
dos2unix file.txt - Конвертировать в новый файл:
dos2unix -n in.txt out.txt - Тот же принцип для unix2dos.
Альтернативные подходы
- Текстовый редактор: большинство современных редакторов (VS Code, Sublime, Notepad++) умеют распознавать и менять окончания строк вручную.
- Скрипты: для массовой обработки можно использовать awk/sed/perl/python, если нужен тонкий контроль над кодировкой.
- Git: настройка
core.autocrlfпомогает при обмене репозиториями между Windows и Unix.
Когда конвертация не сработает или вредна
- Файлы в UTF‑16/UTF‑32 часто содержат байты, которые будут искажены при простом преобразовании конца строки.
- Бинарные файлы и изображения нельзя конвертировать таким способом.
- Старые Mac‑форматы с одиночным CR встречаются редко, но требуют специальных инструментов.
Сравнение подходов
| Подход | Плюсы | Минусы |
|---|---|---|
| dos2unix/unix2dos | Быстро, простая команда, сохранение прав доступа | Могут сломать файлы с другой кодировкой |
| Редактор | Графический контроль, выбор кодировки | Ручной процесс для многих файлов |
| Скрипты (perl/python) | Высокая гибкость, автоматизация | Требует знаний и тестирования |
Роли и чек‑лист
- Разработчик:
- Проверить формат перед запуском скрипта.
- Добавить проверку в CI.
- Системный администратор:
- Автоматизировать конвертацию при обмене файлами между системами.
- Технический писатель / контент‑менеджер:
- Хранить копии исходных файлов и выбирать единый формат для публикации.
Быстрый ментальный образ
Представьте печатную машинку: возврат каретки (CR) возвращает каретку в начало строки, а перевод строки (LF) опускает ленту на одну строку. В Unix используют только «опускание ленты» (LF). Windows делает и то, и другое (CRLF).
1‑строчный глоссарий
- LF: “\n”, конец строки в Unix.
- CRLF: “\r\n”, конец строки в Windows.
- CR: “\r”, старый формат Mac.
Короткая памятка безопасности
- Всегда делайте резервные копии.
- Не применяйте dos2unix к бинарным или UTF‑16 файлам.
- Тестируйте после конвертации.
Итог
Dos2unix и unix2dos — надёжный и простой инструмент для приведения переносов строк к нужному формату. Выясните текущий формат, сделайте бекап, выполните конвертацию и прогон тестов. Для интеграции в рабочие процессы используйте редакторы, скрипты или настройку Git в дополнение к этим утилитам.
Краткие рекомендации: резервная копия, проверка формата, однократная конвертация и автоматизация в CI при необходимости.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone