Команда Linux dos2unix

Linux 命令大全Энциклопедия команд Linux


dos2unix — это утилита для преобразования текстовых файлов из формата DOS/Windows в формат Unix/Linux. Она в основном решает проблемы, вызванные различиями в символах новой строки между разными операционными системами.

Основные функции:

  • Преобразует текстовые файлы из формата DOS/Windows (окончания строк CRLF) в формат Unix/Linux (окончания строк LF)
  • Обрабатывает проблемы с кодировкой файлов (необязательно)
  • Пакетное преобразование нескольких файлов

Зачем нужен dos2unix

Различия в символах новой строки

Разные операционные системы используют разные символы новой строки:

  • Windows/DOS: использует возврат каретки + перевод строки (CRLF, т.е.rn)
  • Unix/Linux: использует только перевод строки (LF, т.е.n)
  • Mac OS (старые версии): использует возврат каретки (CR, т.е.r)

Симптомы проблемы

Когда текстовые файлы, созданные в Windows, открываются в системе Linux:

  • Могут появляться^Mсимволы (видны в vi)
  • Файлы скриптов могут выполняться неправильно
  • Некоторые инструменты (такие как grep, awk) могут обрабатывать текст неправильно

Установка dos2unix

В большинстве дистрибутивов Linux dos2unix не устанавливается по умолчанию; его нужно установить вручную:

Ubuntu/Debian

Пример

sudo apt-get update
sudo apt-get install dos2unix

CentOS/RHEL

sudo yum install dos2unix

Проверка установки

dos2unix --version

Базовый синтаксис

dos2unix [选项] 文件...

Распространённые параметры

Опция Описание
-k Сохранить временную метку файла без изменений
-f Принудительное преобразование, игнорировать проверку двоичных файлов
-q Тихий режим, не выводить предупреждающие сообщения
-o Перезаписать исходный файл (поведение по умолчанию)
-n Режим нового файла, сохранить исходный файл, вывести в новый файл
-c Преобразование кодировки (должно использоваться с-eопция)
-e Указать целевую кодировку (например,-e utf8)
-b Создать резервный файл (добавить.bakсуффикс)

Примеры использования

1. Базовое преобразование

dos2unix file.txt

Это напрямую изменит файл file.txt

2. Сохранить исходный файл

dos2unix -n file.txt newfile.txt

Исходный файл остаётся без изменений; результат преобразования сохраняется в newfile.txt

3. Пакетное преобразование

dos2unix *.txt

Преобразовать все файлы .txt в текущем каталоге

4. Рекурсивно преобразовать каталоги

find . -type f -name "*.sh" -exec dos2unix {} ;

Преобразовать все файлы .sh в текущем каталоге и его подкаталогах

5. Сохранить временные метки

dos2unix -k script.py

Преобразовать script.py, но сохранить время его изменения


Практические сценарии применения

1. Исправление скриптов, перенесённых из Windows

Пример

# Преобразовать файл скрипта
dos2unix backup_script.sh

# Добавить право на выполнение
chmod +x backup_script.sh

# Выполнить скрипт
./backup_script.sh

2. Обработка конфигурационных файлов, совместно используемых командой разработчиков

Пример

# Преобразовать весь каталог конфигурации
find /etc/myapp/conf.d/ -type f -exec dos2unix {} ;

3. Подготовка файлов для загрузки на сервер Linux

dos2unix -b *.php  # 转换并创建备份

Меры предосторожности

  1. Двоичные файлы: Не используйте dos2unix для двоичных файлов (таких как изображения, PDF-файлы); это повредит файл
  2. Контроль версий: В системах контроля версий, таких как Git, лучше единообразно настроить обработку символов новой строки
  3. Проблемы с кодировкой: Если файл содержит символы, не входящие в ASCII, возможно, вам потребуется использовать-cи-eопция для обработки кодировки
  4. Резервное копирование: рекомендуется использовать-bопция для создания резервной копии перед конвертацией важных файлов

Альтернативные решения

Если dos2unix не установлен в системе, можно использовать следующие альтернативные методы:

1. Использование команды tr

tr -d 'r'  unixfile.txt

2. Использование команды sed

sed -i 's/r$//' winfile.txt

3. Использование vim

Пример

:set ff=unix
:wq

Итог

dos2unix — практичный инструмент для решения проблем с форматом текстовых файлов на разных платформах, особенно подходит для:

  • Системные администраторы, обслуживающие серверы
  • Разработчики, сотрудничающие на разных платформах
  • Обработка скриптов и конфигурационных файлов, перенесённых с Windows на Linux

Освоение команды dos2unix позволяет эффективно избежать различных проблем, вызванных различиями в символах перевода строки, и повысить эффективность работы.


Linux 命令大全Энциклопедия команд Linux

Другие расширения