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