Команда dos2unix служит для преобразования форматов текстовых файлов MSDOS к UNIX формату, а команда unix2dos служит для преобразования форматов текстовых файлов UNIX к формату MSDOS* и windows*.

Известно, что форматы текстовых файлов в DOS и в UNIX немного отличаются:

  • В DOS все строки заканчиваются парой символов CR и LF (возврат каретки /r и перевод строки /n)
  • А *UNIX использует только символ LF перевод строки /n, справедливо полагая, что второй символ совершенно излишен.

Чтобы не устанавливать эти консольные утилиты dos2unix и unix2dos можно воспользоваться вот такими несложными функциями написанными с использованием sed в sh или bash:

#!/bin/sh

dos2unix() {
 sed -i '' -e 's/'"$(printf '\015')"'$//' "$1"
}

unix2dos() {
 sed -i '' -e 's|$|'"$(printf '\015')"'|' "$1"
}

# Сделать окончания строк LF (Unix)
dos2unix file.test

# Сделать окончания строк CR/LF (Win or Dos)
unix2dos file.test

Запустить аналог на sed для dos2unix прямо в консоли можно командой:

sed -i '' -e 's/'"`printf '\015'`"'$//' file.name

А аналог на sed для `unix2dos прямо в консоли выглядит так:

sed -i '' -e 's|$|'"`printf '\015'`"'|' file.name

Обработать рекурсивно все php файлы в текущем каталоге:

find . -name "*.php" -type f -exec sed -i '' -e 's/'"`printf '\015'`"'$//' {} \;

Причины НЕ устанавливать данные консольные утилиты могут быть разными, например невозможность их установить (случай с VPS или web хостингом), спортивный интерес ну или просто лень :)


Comments

comments powered by Disqus