Команда 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